diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-09-24 10:29:27 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-09-24 10:29:27 (GMT) |
commit | e9a086bf010626d0e0af54693db776ccda76b5c4 (patch) | |
tree | ddf028fb988807e8c612681d7d608ac82a1f51ba /Lib/test | |
parent | 43705d76aa39a9517ffa5fa124f9333a7874fbd9 (diff) | |
parent | 5e193ac0bd6bd4d4a122fd9aa2446ee70e5f2bf1 (diff) | |
download | cpython-e9a086bf010626d0e0af54693db776ccda76b5c4.zip cpython-e9a086bf010626d0e0af54693db776ccda76b5c4.tar.gz cpython-e9a086bf010626d0e0af54693db776ccda76b5c4.tar.bz2 |
Issue #22427: TemporaryDirectory no longer attempts to clean up twice when
used in the with statement in generator.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_tempfile.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index ec975f8..2e10fdd 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -1211,6 +1211,30 @@ class TestTemporaryDirectory(BaseTestCase): self.assertNotIn("Exception ", err) self.assertIn("ResourceWarning: Implicitly cleaning up", err) + def test_exit_on_shutdown(self): + # Issue #22427 + with self.do_create() as dir: + code = """if True: + import sys + import tempfile + import warnings + + def generator(): + with tempfile.TemporaryDirectory(dir={dir!r}) as tmp: + yield tmp + g = generator() + sys.stdout.buffer.write(next(g).encode()) + + warnings.filterwarnings("always", category=ResourceWarning) + """.format(dir=dir) + rc, out, err = script_helper.assert_python_ok("-c", code) + tmp_name = out.decode().strip() + self.assertFalse(os.path.exists(tmp_name), + "TemporaryDirectory %s exists after cleanup" % tmp_name) + err = err.decode('utf-8', 'backslashreplace') + self.assertNotIn("Exception ", err) + self.assertIn("ResourceWarning: Implicitly cleaning up", err) + def test_warnings_on_cleanup(self): # ResourceWarning will be triggered by __del__ with self.do_create() as dir: |