The thing is, the main loader directory is defined at runtime. This is guaranteed by the application, and even has automated test coverage.

So you can just assume that at runtime it will provide a filesystem loader, with the correct directory, and provide one yourself on your tests. I don't see how it violates any OOP principle. If you want to see this from an OOP point of view, just think of [Inversion of Control](http://en.wikipedia.org/wiki/Inversion_of_control). ;-)