New submission from Antoine Pitrou: unittest.loader has the following snippet:
if realpath.lower() != fullpath_noext.lower(): module_dir = os.path.dirname(realpath) mod_name = os.path.splitext(os.path.basename(full_path))[0] expected_dir = os.path.dirname(full_path) msg = ("%r module incorrectly imported from %r. Expected %r. " "Is this module globally installed?") Unfortunately, this will break with virtualenv on Ubuntu, which creates a "local" directory full of symlinks. You end with this kind of error message: ====================================================================== ERROR: __main__ (unittest.loader.LoadTestsFailure) ---------------------------------------------------------------------- ImportError: 'test_asyncagi' module incorrectly imported from '/home/antoine/obelus/.tox/py27/local/lib/python2.7/site-packages/obelus/test'. Expected '/home/antoine/obelus/.tox/py27/lib/python2.7/site-packages/obelus/test'. Is this module globally installed? Instead of (rather stupidly) calling lower(), realpath() and normcase() should be called instead, to make sure the canonical paths are compared. ---------- components: Library (Lib) messages: 200964 nosy: barry, michael.foord, pitrou priority: normal severity: normal stage: needs patch status: open title: unittest loader barfs on symlinks type: behavior versions: Python 2.7, Python 3.3, Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue19352> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com