From 6d09f09d8b4f6e45f4b96145bc75500f590de834 Mon Sep 17 00:00:00 2001 From: Tim Golden Date: Fri, 25 Oct 2013 18:38:16 +0100 Subject: [PATCH] Issue14255 Don't flatten case of tempdir --- Lib/tempfile.py | 2 +- Lib/test/test_tempfile.py | 14 ++++++++++++++ Lib/test/test_zipimport_support.py | 6 ++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Lib/tempfile.py b/Lib/tempfile.py index 7da71c8c3bc..5d3462102f1 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -146,7 +146,7 @@ def _get_default_tempdir(): for dir in dirlist: if dir != _os.curdir: - dir = _os.path.normcase(_os.path.abspath(dir)) + dir = _os.path.abspath(dir) # Try only a few names per directory. for seq in range(100): name = next(namer) diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index 1ee36e223b9..ac4d8609dfe 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -478,6 +478,20 @@ class TestGetTempDir(BaseTestCase): self.assertTrue(a is b) + def test_case_sensitive(self): + # gettempdir should not flatten its case + # even on a case-insensitive file system + case_sensitive_tempdir = tempfile.mkdtemp("-Temp") + _tempdir, tempfile.tempdir = tempfile.tempdir, None + try: + with support.EnvironmentVarGuard() as env: + # Fake the first env var which is checked as a candidate + env["TMPDIR"] = case_sensitive_tempdir + self.assertEqual(tempfile.gettempdir(), case_sensitive_tempdir) + finally: + tempfile.tempdir = _tempdir + support.rmdir(case_sensitive_tempdir) + class TestMkstemp(BaseTestCase): """Test mkstemp().""" diff --git a/Lib/test/test_zipimport_support.py b/Lib/test/test_zipimport_support.py index f7f3398015a..84ba5e047a3 100644 --- a/Lib/test/test_zipimport_support.py +++ b/Lib/test/test_zipimport_support.py @@ -227,13 +227,15 @@ class ZipSupportTests(unittest.TestCase): p = spawn_python(script_name) p.stdin.write(b'l\n') data = kill_python(p) - self.assertIn(script_name.encode('utf-8'), data) + # bdb/pdb applies normcase to its filename before displaying + self.assertIn(os.path.normcase(script_name.encode('utf-8')), data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') p = spawn_python(zip_name) p.stdin.write(b'l\n') data = kill_python(p) - self.assertIn(run_name.encode('utf-8'), data) + # bdb/pdb applies normcase to its filename before displaying + self.assertIn(os.path.normcase(run_name.encode('utf-8')), data) def test_main():