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