]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
test_copytree_simple(): This was leaving behind two new temp
authorTim Peters <tim.peters@gmail.com>
Thu, 10 Aug 2006 03:01:26 +0000 (03:01 +0000)
committerTim Peters <tim.peters@gmail.com>
Thu, 10 Aug 2006 03:01:26 +0000 (03:01 +0000)
directories each time it ran, at least on Windows.

Several changes:  explicitly closed all files; wrapped long
lines; stopped suppressing errors when removing a file or
directory fails (removing /shouldn't/ fail!); and changed
what appeared to be incorrect usage of os.removedirs() (that
doesn't remove empty directories at and /under/ the given
path, instead it must be given an empty leaf directory and
then deletes empty directories moving /up/ the path -- could
be that the conceptually simpler shutil.rmtree() was really
actually intended here).

Lib/test/test_shutil.py

index df35abfcea0e4ee554f337f89b495cb4c141e0ee..da71fa83bcd886cc0a1e1df4116568f10219cf1a 100644 (file)
@@ -74,31 +74,51 @@ class TestShutil(unittest.TestCase):
             except:
                 pass
 
-
     def test_copytree_simple(self):
+        def write_data(path, data):
+            f = open(path, "w")
+            f.write(data)
+            f.close()
+
+        def read_data(path):
+            f = open(path)
+            data = f.read()
+            f.close()
+            return data
+
         src_dir = tempfile.mkdtemp()
         dst_dir = os.path.join(tempfile.mkdtemp(), 'destination')
-        open(os.path.join(src_dir, 'test.txt'), 'w').write('123')
+
+        write_data(os.path.join(src_dir, 'test.txt'), '123')
+
         os.mkdir(os.path.join(src_dir, 'test_dir'))
-        open(os.path.join(src_dir, 'test_dir', 'test.txt'), 'w').write('456')
-        #
+        write_data(os.path.join(src_dir, 'test_dir', 'test.txt'), '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')
+            self.assertTrue(os.path.isfile(os.path.join(dst_dir, 'test_dir',
+                                                        'test.txt')))
+            actual = read_data(os.path.join(dst_dir, 'test.txt'))
+            self.assertEqual(actual, '123')
+            actual = read_data(os.path.join(dst_dir, 'test_dir', 'test.txt'))
+            self.assertEqual(actual, '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
+            for path in (
+                    os.path.join(src_dir, 'test.txt'),
+                    os.path.join(dst_dir, 'test.txt'),
+                    os.path.join(src_dir, 'test_dir', 'test.txt'),
+                    os.path.join(dst_dir, 'test_dir', 'test.txt'),
+                ):
+                if os.path.exists(path):
+                    os.remove(path)
+            for path in (
+                    os.path.join(src_dir, 'test_dir'),
+                    os.path.join(dst_dir, 'test_dir'),
+                ):
+                if os.path.exists(path):
+                    os.removedirs(path)
 
 
     if hasattr(os, "symlink"):