Now can reproduce the error on AMD64 Windows Server 2008

even where os.symlink is not supported.
This commit is contained in:
Hirokazu Yamamoto 2010-12-05 02:04:16 +00:00
parent c269ae87c1
commit 2668145dbd

View file

@ -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")