From 7865dfff2e3408948bada0034ec1d3d29f655cc1 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 28 Oct 2016 09:17:38 +0300 Subject: [PATCH] Issue #28353: Make test_os.WalkTests.test_walk_bad_dir stable. --- Lib/test/test_os.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 2fd8a3574c1..10383cfc1f0 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -980,16 +980,21 @@ class WalkTests(unittest.TestCase): errors = [] walk_it = self.walk(self.walk_path, onerror=errors.append) root, dirs, files = next(walk_it) - self.assertFalse(errors) - dir1 = dirs[0] - dir1new = dir1 + '.new' - os.rename(os.path.join(root, dir1), os.path.join(root, dir1new)) - roots = [r for r, d, f in walk_it] - self.assertTrue(errors) - self.assertNotIn(os.path.join(root, dir1), roots) - self.assertNotIn(os.path.join(root, dir1new), roots) - for dir2 in dirs[1:]: - self.assertIn(os.path.join(root, dir2), roots) + self.assertEqual(errors, []) + dir1 = 'SUB1' + path1 = os.path.join(root, dir1) + path1new = os.path.join(root, dir1 + '.new') + os.rename(path1, path1new) + try: + roots = [r for r, d, f in walk_it] + self.assertTrue(errors) + self.assertNotIn(path1, roots) + self.assertNotIn(path1new, roots) + for dir2 in dirs: + if dir2 != dir1: + self.assertIn(os.path.join(root, dir2), roots) + finally: + os.rename(path1new, path1) @unittest.skipUnless(hasattr(os, 'fwalk'), "Test needs os.fwalk()")