From: Benjamin Peterson Date: Wed, 29 Apr 2009 22:43:35 +0000 (+0000) Subject: fix test_shutil on ZFS #5676 X-Git-Tag: v2.7a1~1334 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9c6fc5187fbf23d584834e9c9697986c42cabecd;p=python fix test_shutil on ZFS #5676 --- diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index ac37a536c9..169290da7b 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -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: