mirror of
https://github.com/python/cpython.git
synced 2025-07-29 14:15:07 +00:00
Don't copy directory stat times in shutil.copytree on Windows
Fixes #1525866.
This commit is contained in:
parent
e34ac7ce7a
commit
4e67838d6c
3 changed files with 37 additions and 1 deletions
|
@ -127,7 +127,13 @@ def copytree(src, dst, symlinks=False):
|
|||
# continue with other files
|
||||
except Error, err:
|
||||
errors.extend(err.args[0])
|
||||
try:
|
||||
copystat(src, dst)
|
||||
except WindowsError:
|
||||
# can't copy file access times on Windows
|
||||
pass
|
||||
except OSError, why:
|
||||
errors.extend((src, dst, str(why)))
|
||||
if errors:
|
||||
raise Error, errors
|
||||
|
||||
|
|
|
@ -74,6 +74,33 @@ class TestShutil(unittest.TestCase):
|
|||
except:
|
||||
pass
|
||||
|
||||
|
||||
def test_copytree_simple(self):
|
||||
src_dir = tempfile.mkdtemp()
|
||||
dst_dir = os.path.join(tempfile.mkdtemp(), 'destination')
|
||||
open(os.path.join(src_dir, 'test.txt'), 'w').write('123')
|
||||
os.mkdir(os.path.join(src_dir, 'test_dir'))
|
||||
open(os.path.join(src_dir, 'test_dir', 'test.txt'), 'w').write('456')
|
||||
#
|
||||
try:
|
||||
shutil.copytree(src_dir, dst_dir)
|
||||
self.assertTrue(os.path.isfile(os.path.join(dst_dir, 'test.txt')))
|
||||
self.assertTrue(os.path.isdir(os.path.join(dst_dir, 'test_dir')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(dst_dir, 'test_dir', 'test.txt')))
|
||||
self.assertEqual(open(os.path.join(dst_dir, 'test.txt')).read(), '123')
|
||||
self.assertEqual(open(os.path.join(dst_dir, 'test_dir', 'test.txt')).read(), '456')
|
||||
finally:
|
||||
try:
|
||||
os.remove(os.path.join(src_dir, 'test.txt'))
|
||||
os.remove(os.path.join(dst_dir, 'test.txt'))
|
||||
os.remove(os.path.join(src_dir, 'test_dir', 'test.txt'))
|
||||
os.remove(os.path.join(dst_dir, 'test_dir', 'test.txt'))
|
||||
os.removedirs(src_dir)
|
||||
os.removedirs(dst_dir)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
if hasattr(os, "symlink"):
|
||||
def test_dont_copy_file_onto_link_to_itself(self):
|
||||
# bug 851123.
|
||||
|
|
|
@ -61,6 +61,9 @@ Core and builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Bug #1525866: Don't copy directory stat times in
|
||||
shutil.copytree on Windows
|
||||
|
||||
- Bug #1002398: The documentation for os.path.sameopenfile now correctly
|
||||
refers to file descriptors, not file objects.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue