mirror of
https://github.com/python/cpython.git
synced 2026-01-06 23:42:34 +00:00
Now can reproduce the error on AMD64 Windows Server 2008
even where os.symlink is not supported.
This commit is contained in:
parent
c269ae87c1
commit
2668145dbd
1 changed files with 21 additions and 16 deletions
|
|
@ -271,25 +271,33 @@ def _filter(src, names):
|
|||
shutil.rmtree(src_dir)
|
||||
shutil.rmtree(os.path.dirname(dst_dir))
|
||||
|
||||
@unittest.skipUnless(hasattr(os, "symlink"),
|
||||
"Missing symlink implementation")
|
||||
@unittest.skipUnless(hasattr(os, 'link'), 'requires os.link')
|
||||
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')
|
||||
try:
|
||||
f = open(src, 'w')
|
||||
f.write('cheddar')
|
||||
f.close()
|
||||
|
||||
if hasattr(os, "link"):
|
||||
os.link(src, dst)
|
||||
self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
|
||||
with open(src, 'r') as f:
|
||||
self.assertEqual(f.read(), 'cheddar')
|
||||
os.remove(dst)
|
||||
with open(src, 'w') as f:
|
||||
f.write('cheddar')
|
||||
os.link(src, dst)
|
||||
self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
|
||||
with open(src, 'r') as f:
|
||||
self.assertEqual(f.read(), 'cheddar')
|
||||
os.remove(dst)
|
||||
finally:
|
||||
shutil.rmtree(TESTFN, ignore_errors=True)
|
||||
|
||||
@unittest.skipUnless(hasattr(os, "symlink"),
|
||||
"Missing symlink implementation")
|
||||
def test_dont_copy_file_onto_symlink_to_itself(self):
|
||||
# bug 851123.
|
||||
os.mkdir(TESTFN)
|
||||
src = os.path.join(TESTFN, 'cheese')
|
||||
dst = os.path.join(TESTFN, 'shop')
|
||||
try:
|
||||
with open(src, 'w') as f:
|
||||
f.write('cheddar')
|
||||
# Using `src` here would mean we end up with a symlink pointing
|
||||
# to TESTFN/TESTFN/cheese, while it should point at
|
||||
# TESTFN/cheese.
|
||||
|
|
@ -299,10 +307,7 @@ def test_dont_copy_file_onto_link_to_itself(self):
|
|||
self.assertEqual(f.read(), 'cheddar')
|
||||
os.remove(dst)
|
||||
finally:
|
||||
try:
|
||||
shutil.rmtree(TESTFN)
|
||||
except OSError:
|
||||
pass
|
||||
shutil.rmtree(TESTFN, ignore_errors=True)
|
||||
|
||||
@unittest.skipUnless(hasattr(os, "symlink"),
|
||||
"Missing symlink implementation")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue