Use an fake directory data structure rather than the filesystem

… so many tests can be constructed without polluting the repo.

ignore files and expected output are still in the filesystem.