from test.support import import_helper
from test.support import is_emscripten, is_wasi
+from test.support import set_recursion_limit
from test.support import os_helper
from test.support.os_helper import TESTFN, FakePath
from test.test_pathlib import test_pathlib_abc
self.assertEqual(next(it), expected)
path = path / 'd'
+ def test_walk_above_recursion_limit(self):
+ recursion_limit = 40
+ # directory_depth > recursion_limit
+ directory_depth = recursion_limit + 10
+ base = self.cls(self.base, 'deep')
+ path = base.joinpath(*(['d'] * directory_depth))
+ path.mkdir(parents=True)
+
+ with set_recursion_limit(recursion_limit):
+ list(base.walk())
+ list(base.walk(top_down=False))
+
+ def test_glob_many_open_files(self):
+ depth = 30
+ P = self.cls
+ p = base = P(self.base) / 'deep'
+ p.mkdir()
+ for _ in range(depth):
+ p /= 'd'
+ p.mkdir()
+ pattern = '/'.join(['*'] * depth)
+ iters = [base.glob(pattern) for j in range(100)]
+ for it in iters:
+ self.assertEqual(next(it), p)
+ iters = [base.rglob('d') for j in range(100)]
+ p = base
+ for i in range(depth):
+ p = p / 'd'
+ for it in iters:
+ self.assertEqual(next(it), p)
+
+ def test_glob_above_recursion_limit(self):
+ recursion_limit = 50
+ # directory_depth > recursion_limit
+ directory_depth = recursion_limit + 10
+ base = self.cls(self.base, 'deep')
+ path = base.joinpath(*(['d'] * directory_depth))
+ path.mkdir(parents=True)
+
+ with set_recursion_limit(recursion_limit):
+ list(base.glob('**/'))
+
@only_posix
class PosixPathTest(PathTest, PurePosixPathTest):
from pathlib._abc import UnsupportedOperation, PurePathBase, PathBase
import posixpath
-from test.support import set_recursion_limit
from test.support.os_helper import TESTFN
}
self.assertEqual(given, {p / x for x in expect})
- def test_glob_many_open_files(self):
- depth = 30
- P = self.cls
- p = base = P(self.base) / 'deep'
- p.mkdir()
- for _ in range(depth):
- p /= 'd'
- p.mkdir()
- pattern = '/'.join(['*'] * depth)
- iters = [base.glob(pattern) for j in range(100)]
- for it in iters:
- self.assertEqual(next(it), p)
- iters = [base.rglob('d') for j in range(100)]
- p = base
- for i in range(depth):
- p = p / 'd'
- for it in iters:
- self.assertEqual(next(it), p)
-
def test_glob_dotdot(self):
# ".." is not special in globs.
P = self.cls
bad_link.symlink_to("bad" * 200)
self.assertEqual(sorted(base.glob('**/*')), [bad_link])
- def test_glob_above_recursion_limit(self):
- recursion_limit = 50
- # directory_depth > recursion_limit
- directory_depth = recursion_limit + 10
- base = self.cls(self.base, 'deep')
- path = base.joinpath(*(['d'] * directory_depth))
- path.mkdir(parents=True)
-
- with set_recursion_limit(recursion_limit):
- list(base.glob('**/'))
-
def test_glob_recursive_no_trailing_slash(self):
P = self.cls
p = P(self.base)
else:
self.fail("symlink not found")
- def test_walk_above_recursion_limit(self):
- recursion_limit = 40
- # directory_depth > recursion_limit
- directory_depth = recursion_limit + 10
- base = self.cls(self.base, 'deep')
- path = base.joinpath(*(['d'] * directory_depth))
- path.mkdir(parents=True)
-
- with set_recursion_limit(recursion_limit):
- list(base.walk())
- list(base.walk(top_down=False))
class DummyPathWithSymlinks(DummyPath):
def readlink(self):