[New-bugs-announce] [issue10896] trace module compares directories as strings (--ignore-dir)

Vladimir Rutsky report at bugs.python.org
Wed Jan 12 15:44:49 CET 2011

New submission from Vladimir Rutsky <rutsky.vladimir at gmail.com>:

This is code from recent trace.py (http://svn.python.org/view/python/branches/release27-maint/Lib/trace.py?view=markup):

        # Ignore a file when it contains one of the ignorable paths
        for d in self._dirs:
            # The '+ os.sep' is to ensure that d is a parent directory,
            # as compared to cases like:
            #  d = "/usr/local"
            #  filename = "/usr/local.py"
            # or
            #  d = "/usr/local.py"
            #  filename = "/usr/local.py"
            if filename.startswith(d + os.sep):
                self._ignore[modulename] = 1
                return 1

Directories comparison like "filename.startswith(d + os.sep)" works incorrect on case-insensitive filesystems (such as NTFS on Windows).

This leads to confusing results on Windows:
  python trace.py --ignore-dir='$prefix' -t test.py
  python trace.py --ignore-dir C:\Python26\Lib -t test.py
shows all calls from standard library, but this one doesn't:
  python trace.py --ignore-dir=c:\python26\lib -t test.py

See attached test files and log for details.

components: Library (Lib)
files: test.py
messages: 126101
nosy: vrutsky
priority: normal
severity: normal
status: open
title: trace module compares directories as strings (--ignore-dir)
versions: Python 2.7
Added file: http://bugs.python.org/file20368/test.py

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list