Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
Closed
Description
Bug report
Bug description:
os.walk
andPath.walk
both have a test verifying that they're not implemented recursively. However, their recursion limits are absolute rather than relative to the current frame. Since the test framework itself already consumes about 30 frames, it only takes a few extra frames to cause a spurious failure. This can easily happen when running the tests within another script, which happens in the Android testbed.
For example, if the limit in test_pathlib is reduced from 40 to 35:
======================================================================ERROR: test_walk_above_recursion_limit (test.test_pathlib.test_pathlib.PosixPathTest.test_walk_above_recursion_limit)----------------------------------------------------------------------Traceback (most recent call last): File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 241, in __str__ return self._str ^^^^^^^^^AttributeError: 'PosixPath' object has no attribute '_str'During handling of the above exception, another exception occurred:Traceback (most recent call last): File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 300, in drive return self._drv ^^^^^^^^^AttributeError: 'PosixPath' object has no attribute '_drv'During handling of the above exception, another exception occurred:Traceback (most recent call last): File "/Users/msmith/git/python/cpython/Lib/test/test_pathlib/test_pathlib.py", line 1203, in test_walk_above_recursion_limit list(base.walk()) ~~~~^^^^^^^^^^^^^ File "/Users/msmith/git/python/cpython/Lib/pathlib/_abc.py", line 875, in walk scandir_obj = path._scandir() ~~~~~~~~~~~~~^^ File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 588, in _scandir return os.scandir(self) ~~~~~~~~~~^^^^^^ File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 177, in __fspath__ return str(self) ~~~^^^^^^ File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 243, in __str__ self._str = self._format_parsed_parts(self.drive, self.root, ^^^^^^^^^^ File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 302, in drive self._drv, self._root, self._tail_cached = self._parse_path(self._raw_path) ^^^^^^^^^^^^^^ File "/Users/msmith/git/python/cpython/Lib/pathlib/__init__.py", line 293, in _raw_path path = self.pathmod.join(*paths) ~~~~~~~~~~~~~~~~~^^^^^^^^ File "<frozen posixpath>", line 77, in joinRecursionError: maximum recursion depth exceeded
CPython versions tested on:
CPython main branch
Operating systems tested on:
- macOS
- Android