changeset: 104765:df28e536f19d branch: 3.6 parent: 104762:eea669163131 parent: 104764:655510dd46fd user: Serhiy Storchaka date: Fri Oct 28 09:18:30 2016 +0300 files: Lib/test/test_os.py description: Issue #28353: Make test_os.WalkTests.test_walk_bad_dir stable. diff -r eea669163131 -r df28e536f19d Lib/test/test_os.py --- a/Lib/test/test_os.py Thu Oct 27 14:28:07 2016 -0700 +++ b/Lib/test/test_os.py Fri Oct 28 09:18:30 2016 +0300 @@ -989,16 +989,21 @@ 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()")