This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author chris.jerdonek
Recipients chris.jerdonek
Date 2014-12-21.08:42:18
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1419151339.28.0.203745779889.issue23097@psf.upfronthosting.co.za>
In-reply-to
Content
I have observed that when running unit tests using unittest's test discovery, unittest can simultaneously (1) modify sys.path unnecessarily (by adding a path that is already in sys.path with a different case), and (2) modify sys.path by adding a path of the "wrong" case.

This occurs for me on Mac OS X with the default case-insensitive file system.

If the path--

'/Users/chris/Dev/python/my_package'

is already in sys.path, running unittest's test discovery will prepend sys.path with the following:

'/Users/chris/dev/python/my_package'

Aside from causing unnecessary modifications of sys.path, this also causes an issue in coverage, for example:

https://bitbucket.org/ned/coveragepy/issue/348

The relevant code is here in unittest/loader.py (with `top_level_dir` starting out as os.curdir):

    top_level_dir = os.path.abspath(top_level_dir)

    if not top_level_dir in sys.path:
        # all test modules must be importable from the top level directory
        # should we *unconditionally* put the start directory in first
        # in sys.path to minimise likelihood of conflicts between installed
        # modules and development versions?
        sys.path.insert(0, top_level_dir)
    self._top_level_dir = top_level_dir

(from https://hg.python.org/cpython/file/75ede5bec8db/Lib/unittest/loader.py#l259 )

The issue occurs when os.path.abspath(top_level_dir) is already in sys.path but with a different case.  (Note that if os.path.abspath() returned a path with the "right" case, then the unittest code would be okay.)

See also these two threads regarding obtaining the correct case for a path:

1. https://mail.python.org/pipermail/python-dev/2010-September/103823.html
2. https://mail.python.org/pipermail/python-ideas/2010-September/008153.html
History
Date User Action Args
2014-12-21 08:42:19chris.jerdoneksetrecipients: + chris.jerdonek
2014-12-21 08:42:19chris.jerdoneksetmessageid: <1419151339.28.0.203745779889.issue23097@psf.upfronthosting.co.za>
2014-12-21 08:42:19chris.jerdoneklinkissue23097 messages
2014-12-21 08:42:18chris.jerdonekcreate