diff options
author | Brett Cannon <brett@python.org> | 2013-11-22 21:14:10 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2013-11-22 21:14:10 (GMT) |
commit | fe77f4ebb554bf40b5c1810aeddc2c240aaef431 (patch) | |
tree | ed1f0b15beb7ca3f9ffdbd0792538bb35fb2c7b6 | |
parent | aa407758176affde0c81301e3c8856dd73e6b1c3 (diff) | |
download | cpython-fe77f4ebb554bf40b5c1810aeddc2c240aaef431.zip cpython-fe77f4ebb554bf40b5c1810aeddc2c240aaef431.tar.gz cpython-fe77f4ebb554bf40b5c1810aeddc2c240aaef431.tar.bz2 |
Issue #19718: Add a case-insensitive FS check to test.support to use
in test_pathlib.
Purposefully designed to work from a specified directory in case
multiple file systems are used on the system.
-rw-r--r-- | Lib/test/support/__init__.py | 16 | ||||
-rwxr-xr-x | Lib/test/test_pathlib.py | 8 |
2 files changed, 21 insertions, 3 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index b6a430e..87c039a 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -76,7 +76,7 @@ __all__ = [ "captured_stdin", "captured_stderr", # filesystem "TESTFN", "SAVEDCWD", "unlink", "rmtree", "temp_cwd", "findfile", - "create_empty_file", "can_symlink", + "create_empty_file", "can_symlink", "fs_is_case_insensitive", # unittest "is_resource_enabled", "requires", "requires_freebsd_version", "requires_linux_version", "requires_mac_ver", "check_syntax_error", @@ -2045,6 +2045,20 @@ def skip_unless_xattr(test): return test if ok else unittest.skip(msg)(test) +def fs_is_case_insensitive(directory): + """Detects if the file system for the specified directory is case-insensitive.""" + base_fp, base_path = tempfile.mkstemp(dir=directory) + case_path = base_path.upper() + if case_path == base_path: + case_path = base_path.lower() + try: + return os.path.samefile(base_path, case_path) + except FileNotFoundError: + return False + finally: + os.unlink(base_path) + + class SuppressCrashReport: """Try to prevent a crash report from popping up. diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index e23e5a7..751764f 100755 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -1623,12 +1623,16 @@ class PosixPathTest(_BasePathTest, unittest.TestCase): def test_glob(self): P = self.cls p = P(BASE) - self.assertEqual(set(p.glob("FILEa")), set()) + given = set(p.glob("FILEa")) + expect = set() if not support.fs_is_case_insensitive(BASE) else given + self.assertEqual(given, expect) def test_rglob(self): P = self.cls p = P(BASE, "dirC") - self.assertEqual(set(p.rglob("FILEd")), set()) + given = set(p.rglob("FILEd")) + expect = set() if not support.fs_is_case_insensitive(BASE) else given + self.assertEqual(given, expect) @only_nt |