[Python-checkins] r50977 - in python/trunk: Lib/shutil.py Lib/test/test_shutil.py Misc/NEWS
martin.v.loewis
python-checkins at python.org
Sun Jul 30 15:00:33 CEST 2006
Author: martin.v.loewis
Date: Sun Jul 30 15:00:31 2006
New Revision: 50977
Modified:
python/trunk/Lib/shutil.py
python/trunk/Lib/test/test_shutil.py
python/trunk/Misc/NEWS
Log:
Don't copy directory stat times in shutil.copytree on Windows
Fixes #1525866.
Modified: python/trunk/Lib/shutil.py
==============================================================================
--- python/trunk/Lib/shutil.py (original)
+++ python/trunk/Lib/shutil.py Sun Jul 30 15:00:31 2006
@@ -127,7 +127,13 @@
# continue with other files
except Error, err:
errors.extend(err.args[0])
- copystat(src, dst)
+ 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
Modified: python/trunk/Lib/test/test_shutil.py
==============================================================================
--- python/trunk/Lib/test/test_shutil.py (original)
+++ python/trunk/Lib/test/test_shutil.py Sun Jul 30 15:00:31 2006
@@ -74,6 +74,33 @@
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.
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Sun Jul 30 15:00:31 2006
@@ -61,6 +61,9 @@
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.
More information about the Python-checkins
mailing list