mirror of https://github.com/python/cpython
gh-92550: Fix pathlib.Path.rglob() for empty pattern (GH-92604)
(cherry picked from commit 87f849c775
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
951cfc8e54
commit
5135b6ed73
|
@ -960,7 +960,7 @@ class Path(PurePath):
|
|||
drv, root, pattern_parts = self._flavour.parse_parts((pattern,))
|
||||
if drv or root:
|
||||
raise NotImplementedError("Non-relative patterns are unsupported")
|
||||
if pattern[-1] in (self._flavour.sep, self._flavour.altsep):
|
||||
if pattern and pattern[-1] in (self._flavour.sep, self._flavour.altsep):
|
||||
pattern_parts.append('')
|
||||
selector = _make_selector(("**",) + tuple(pattern_parts), self._flavour)
|
||||
for p in selector.select_from(self):
|
||||
|
|
|
@ -1693,10 +1693,15 @@ class _BasePathTest(object):
|
|||
"dirA", "dirA/linkC", "dirB", "dirB/linkD", "dirC",
|
||||
"dirC/dirD", "dirE", "linkB",
|
||||
])
|
||||
_check(p.rglob(""), ["", "dirA", "dirB", "dirC", "dirE", "dirC/dirD"])
|
||||
|
||||
p = P(BASE, "dirC")
|
||||
_check(p.rglob("*"), ["dirC/fileC", "dirC/novel.txt",
|
||||
"dirC/dirD", "dirC/dirD/fileD"])
|
||||
_check(p.rglob("file*"), ["dirC/fileC", "dirC/dirD/fileD"])
|
||||
_check(p.rglob("*/*"), ["dirC/dirD/fileD"])
|
||||
_check(p.rglob("*/"), ["dirC/dirD"])
|
||||
_check(p.rglob(""), ["dirC", "dirC/dirD"])
|
||||
# gh-91616, a re module regression
|
||||
_check(p.rglob("*.txt"), ["dirC/novel.txt"])
|
||||
_check(p.rglob("*.*"), ["dirC/novel.txt"])
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix :meth:`pathlib.Path.rglob` for empty pattern.
|
Loading…
Reference in New Issue