On 2010-12-20, at 10:41 AM, Ronny Pfannschmidt wrote:
> On Mon, 2010-12-20 at 09:22 +0100, Virgil Dupras wrote:
>> On 2010-12-19, at 3:38 PM, Floris Bruynooghe wrote:
>>> 
>>> Looking at the patch_osstat() it seems to me that it just fakes
>>> os.stat() for one specific path but uses the original in place
>>> otherwise.  This sounds like it could be just a specialised object
>>> used to patch with.  I can imagine the monkeypatch plugin to provide a
>>> funcarg which provides this functionality, e.g.:
>>> 
>>> def test_foo(monkeypatch, monkey_osstat):
>>>   monkeypatch.setattr(monkey_ossstat('/tmp/some_file'))
>>>   ...
>>> 
>> 
>> This would kind of work, but it would become complicated to patch os.stat() 
>> for two or more files, wouldn't it?
> there could be a monkey_stat object that controlls the set of
> files/subtrees under control
> 

Yes, of course, but keeping the proposed API would make it unintuitive for 
multiple files. Example:

monkeypatch.setattr(os, 'stat', monkey_osstat('some_file'))
monkeypatch.setattr(os, 'stat', monkey_osstat('some_other_file'))

We're not sure what happens there, as os.stat is patched twice. Are we 
overwriting our old monkeypatch, or is there some magic caching inside 
monkey_osstat() making it work for both files? That's the kind of question the 
developer will wonder about.
_______________________________________________
py-dev mailing list
py-dev@codespeak.net
http://codespeak.net/mailman/listinfo/py-dev

Reply via email to