diff --git a/Lib/tempfile.py b/Lib/tempfile.py index eae528d..eb66590 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -284,6 +284,8 @@ def mkdtemp(suffix="", prefix=template, dir=None): if dir is None: dir = gettempdir() + else: + dir = _os.path.abspath(dir) names = _get_candidate_names() diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index 351ef08..fa9f15b 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -1220,6 +1220,19 @@ class TestTemporaryDirectory(BaseTestCase): self.assertEqual(name, d.name) self.assertFalse(os.path.exists(name)) + def test_different_cwd_upon_creation(self): # See issue #20267 + # Relative paths are supported + old_cwd = os.getcwd() + try: + new_cwd = os.path.dirname(tempfile.mkdtemp()) + os.chdir(new_cwd) + d = self.do_create(dir='.') + finally: + os.chdir(old_cwd) + + self.assertTrue(new_cwd in d.name) + d.cleanup() + def test_main(): support.run_unittest(__name__)