From 68128715f2b7d4c73f55d576d500b6cd3d41b378 Mon Sep 17 00:00:00 2001 From: Johannes Gijsbers Date: Sat, 14 Aug 2004 13:57:08 +0000 Subject: [PATCH] Unwrap too-smart loop: we can't use `src` for both hard and symbolic links. --- Lib/test/test_shutil.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 083dbda706c..9e5f6ff0489 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)