]> granicus.if.org Git - python/commitdiff
fix test_shutil on ZFS #5676
authorBenjamin Peterson <benjamin@python.org>
Wed, 29 Apr 2009 22:43:35 +0000 (22:43 +0000)
committerBenjamin Peterson <benjamin@python.org>
Wed, 29 Apr 2009 22:43:35 +0000 (22:43 +0000)
Lib/test/test_shutil.py

index ac37a536c9c6de1d1b96dd1d6c9e4721f785338a..169290da7bfa99416ec9898e10c7d1040cc5cc30 100644 (file)
@@ -45,9 +45,23 @@ class TestShutil(unittest.TestCase):
             shutil.rmtree(TESTFN)
 
     def check_args_to_onerror(self, func, arg, exc):
+        # test_rmtree_errors deliberately runs rmtree
+        # on a directory that is chmod 400, which will fail.
+        # This function is run when shutil.rmtree fails.
+        # 99.9% of the time it initially fails to remove
+        # a file in the directory, so the first time through
+        # func is os.remove.
+        # However, some Linux machines running ZFS on
+        # FUSE experienced a failure earlier in the process
+        # at os.listdir.  The first failure may legally
+        # be either.
         if self.errorState == 0:
-            self.assertEqual(func, os.remove)
-            self.assertEqual(arg, self.childpath)
+            if func is os.remove:
+                self.assertEqual(arg, self.childpath)
+            else:
+                self.assertIs(func, os.listdir,
+                              "func must be either os.remove or os.listdir")
+                self.assertEqual(arg, TESTFN)
             self.failUnless(issubclass(exc[0], OSError))
             self.errorState = 1
         else: