mirror of https://github.com/python/cpython
Unwrap too-smart loop: we can't use `src` for both hard and symbolic links.
This commit is contained in:
parent
46f1459860
commit
68128715f2
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue