diff options
-rw-r--r-- | Lib/test/test_shutil.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 083dbda..9e5f6ff 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -31,17 +31,25 @@ class TestShutil(unittest.TestCase): def test_dont_copy_file_onto_link_to_itself(self): # bug 851123. os.mkdir(TESTFN) - src = os.path.join(TESTFN,'cheese') - dst = os.path.join(TESTFN,'shop') + src = os.path.join(TESTFN, 'cheese') + dst = os.path.join(TESTFN, 'shop') try: - f = open(src,'w') + f = open(src, 'w') f.write('cheddar') f.close() - for funcname in 'link','symlink': - getattr(os, funcname)(src, dst) - self.assertRaises(shutil.Error, shutil.copyfile, src, dst) - self.assertEqual(open(src,'r').read(), 'cheddar') - os.remove(dst) + + os.link(src, dst) + self.assertRaises(shutil.Error, shutil.copyfile, src, dst) + self.assertEqual(open(src,'r').read(), 'cheddar') + os.remove(dst) + + # Using `src` here would mean we end up with a symlink pointing + # to TESTFN/TESTFN/cheese, while it should point at + # TESTFN/cheese. + os.symlink('cheese', dst) + self.assertRaises(shutil.Error, shutil.copyfile, src, dst) + self.assertEqual(open(src,'r').read(), 'cheddar') + os.remove(dst) finally: try: shutil.rmtree(TESTFN) |