mirror of
https://github.com/python/cpython.git
synced 2025-09-11 19:27:07 +00:00
GH-103517: Improve tests for pathlib.Path.walk()
(GH-103518)
This commit is contained in:
parent
2b6f5c3483
commit
0097c36e07
1 changed files with 45 additions and 32 deletions
|
@ -2702,20 +2702,20 @@ class WalkTests(unittest.TestCase):
|
||||||
del self.sub2_tree[1][:1]
|
del self.sub2_tree[1][:1]
|
||||||
|
|
||||||
def test_walk_topdown(self):
|
def test_walk_topdown(self):
|
||||||
all = list(self.walk_path.walk())
|
walker = self.walk_path.walk()
|
||||||
|
entry = next(walker)
|
||||||
self.assertEqual(len(all), 4)
|
entry[1].sort() # Ensure we visit SUB1 before SUB2
|
||||||
# We can't know which order SUB1 and SUB2 will appear in.
|
self.assertEqual(entry, (self.walk_path, ["SUB1", "SUB2"], ["tmp1"]))
|
||||||
# Not flipped: TESTFN, SUB1, SUB11, SUB2
|
entry = next(walker)
|
||||||
# flipped: TESTFN, SUB2, SUB1, SUB11
|
self.assertEqual(entry, (self.sub1_path, ["SUB11"], ["tmp2"]))
|
||||||
flipped = all[0][1][0] != "SUB1"
|
entry = next(walker)
|
||||||
all[0][1].sort()
|
self.assertEqual(entry, (self.sub11_path, [], []))
|
||||||
all[3 - 2 * flipped][-1].sort()
|
entry = next(walker)
|
||||||
all[3 - 2 * flipped][1].sort()
|
entry[1].sort()
|
||||||
self.assertEqual(all[0], (self.walk_path, ["SUB1", "SUB2"], ["tmp1"]))
|
entry[2].sort()
|
||||||
self.assertEqual(all[1 + flipped], (self.sub1_path, ["SUB11"], ["tmp2"]))
|
self.assertEqual(entry, self.sub2_tree)
|
||||||
self.assertEqual(all[2 + flipped], (self.sub11_path, [], []))
|
with self.assertRaises(StopIteration):
|
||||||
self.assertEqual(all[3 - 2 * flipped], self.sub2_tree)
|
next(walker)
|
||||||
|
|
||||||
def test_walk_prune(self, walk_path=None):
|
def test_walk_prune(self, walk_path=None):
|
||||||
if walk_path is None:
|
if walk_path is None:
|
||||||
|
@ -2739,24 +2739,37 @@ class WalkTests(unittest.TestCase):
|
||||||
self.test_walk_prune(FakePath(self.walk_path).__fspath__())
|
self.test_walk_prune(FakePath(self.walk_path).__fspath__())
|
||||||
|
|
||||||
def test_walk_bottom_up(self):
|
def test_walk_bottom_up(self):
|
||||||
all = list(self.walk_path.walk( top_down=False))
|
seen_testfn = seen_sub1 = seen_sub11 = seen_sub2 = False
|
||||||
|
for path, dirnames, filenames in self.walk_path.walk(top_down=False):
|
||||||
self.assertEqual(len(all), 4, all)
|
if path == self.walk_path:
|
||||||
# We can't know which order SUB1 and SUB2 will appear in.
|
self.assertFalse(seen_testfn)
|
||||||
# Not flipped: SUB11, SUB1, SUB2, TESTFN
|
self.assertTrue(seen_sub1)
|
||||||
# flipped: SUB2, SUB11, SUB1, TESTFN
|
self.assertTrue(seen_sub2)
|
||||||
flipped = all[3][1][0] != "SUB1"
|
self.assertEqual(sorted(dirnames), ["SUB1", "SUB2"])
|
||||||
all[3][1].sort()
|
self.assertEqual(filenames, ["tmp1"])
|
||||||
all[2 - 2 * flipped][-1].sort()
|
seen_testfn = True
|
||||||
all[2 - 2 * flipped][1].sort()
|
elif path == self.sub1_path:
|
||||||
self.assertEqual(all[3],
|
self.assertFalse(seen_testfn)
|
||||||
(self.walk_path, ["SUB1", "SUB2"], ["tmp1"]))
|
self.assertFalse(seen_sub1)
|
||||||
self.assertEqual(all[flipped],
|
self.assertTrue(seen_sub11)
|
||||||
(self.sub11_path, [], []))
|
self.assertEqual(dirnames, ["SUB11"])
|
||||||
self.assertEqual(all[flipped + 1],
|
self.assertEqual(filenames, ["tmp2"])
|
||||||
(self.sub1_path, ["SUB11"], ["tmp2"]))
|
seen_sub1 = True
|
||||||
self.assertEqual(all[2 - 2 * flipped],
|
elif path == self.sub11_path:
|
||||||
self.sub2_tree)
|
self.assertFalse(seen_sub1)
|
||||||
|
self.assertFalse(seen_sub11)
|
||||||
|
self.assertEqual(dirnames, [])
|
||||||
|
self.assertEqual(filenames, [])
|
||||||
|
seen_sub11 = True
|
||||||
|
elif path == self.sub2_path:
|
||||||
|
self.assertFalse(seen_testfn)
|
||||||
|
self.assertFalse(seen_sub2)
|
||||||
|
self.assertEqual(sorted(dirnames), sorted(self.sub2_tree[1]))
|
||||||
|
self.assertEqual(sorted(filenames), sorted(self.sub2_tree[2]))
|
||||||
|
seen_sub2 = True
|
||||||
|
else:
|
||||||
|
raise AssertionError(f"Unexpected path: {path}")
|
||||||
|
self.assertTrue(seen_testfn)
|
||||||
|
|
||||||
@os_helper.skip_unless_symlink
|
@os_helper.skip_unless_symlink
|
||||||
def test_walk_follow_symlinks(self):
|
def test_walk_follow_symlinks(self):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue