diff options
author | Charles-François Natali <neologix@free.fr> | 2011-07-29 16:59:24 (GMT) |
---|---|---|
committer | Charles-François Natali <neologix@free.fr> | 2011-07-29 16:59:24 (GMT) |
commit | def35435ee4001f8aedac01b559bb0dc2d0aab00 (patch) | |
tree | a3533dae9cb8a88566d6a9304dbc5fbc89ced164 /Lib/test/test_tempfile.py | |
parent | fe1e298d8bbfbdfd1c2af74dbb74f47e2d04a6d0 (diff) | |
download | cpython-def35435ee4001f8aedac01b559bb0dc2d0aab00.zip cpython-def35435ee4001f8aedac01b559bb0dc2d0aab00.tar.gz cpython-def35435ee4001f8aedac01b559bb0dc2d0aab00.tar.bz2 |
Issue #12464: tempfile.TemporaryDirectory.cleanup() should not follow symlinks:
fix it. Patch by Petri Lehtinen.
Diffstat (limited to 'Lib/test/test_tempfile.py')
-rw-r--r-- | Lib/test/test_tempfile.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index 2d29885..f7f5bda 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -964,6 +964,27 @@ class test_TemporaryDirectory(TC): finally: os.rmdir(dir) + @support.skip_unless_symlink + def test_cleanup_with_symlink_to_a_directory(self): + # cleanup() should not follow symlinks to directories (issue #12464) + d1 = self.do_create() + d2 = self.do_create() + + # Symlink d1/foo -> d2 + os.symlink(d2.name, os.path.join(d1.name, "foo")) + + # This call to cleanup() should not follow the "foo" symlink + d1.cleanup() + + self.assertFalse(os.path.exists(d1.name), + "TemporaryDirectory %s exists after cleanup" % d1.name) + self.assertTrue(os.path.exists(d2.name), + "Directory pointed to by a symlink was deleted") + self.assertEqual(os.listdir(d2.name), ['test.txt'], + "Contents of the directory pointed to by a symlink " + "were deleted") + d2.cleanup() + @support.cpython_only def test_del_on_collection(self): # A TemporaryDirectory is deleted when garbage collected |