"Virtual" file system mock object - replacing stuff in __builtins__

Remy Blank remy.blank_asps at pobox.com
Tue Mar 9 12:26:14 EST 2004


John Roth wrote:
> "Remy Blank" <remy.blank_asps at pobox.com> wrote in message
> news:404844e3$1 at epflnews.epfl.ch...
>>Now my questions:
>>  - Am I doing something fundamentally forbidden (replacing stuff in
>>existing modules like __builtins__ or os)?
> 
> Yes. It's never a good idea to replace stuff on the system
> level, and some day it might become impossible.

That's too bad. When test-driving code in C++, you have to use an 
abstraction layer between your code and the file system accessors, to be 
able to replace it by a mock object for testing. I always thought it was 
an advantage of Python to be able to use the "native" calls and still 
replace them by stubs for testing purposes.

> Well, I don't know about "better" but what I've discovered
> is that file system scans are ideal usages of the Visitor pattern.
> I've got a single module that contains the guts of the file
> system scanner and a number of useful utility methods (such
> as loading a file into memory, writing it out and setting the
> stats).

The visitor pattern really is an elegant solution for scanning a file 
system. I think I'll give it a try.

If I understand you correctly, your scanner module is the abstraction 
layer I mentioned above, and you can replace it by stubs for test cases. 
Maybe that's the most reasonable way to go. But it would still be useful 
to have a generic scanner mock object that simulates a file system.

-- Remy

Remove underscore and anti-spam suffix in reply address for a timely 
response.



More information about the Python-list mailing list