]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-92550: Fix pathlib.Path.rglob() for empty pattern (GH-92604)
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 11 May 2022 04:43:04 +0000 (07:43 +0300)
committerGitHub <noreply@github.com>
Wed, 11 May 2022 04:43:04 +0000 (07:43 +0300)
Lib/pathlib.py
Lib/test/test_pathlib.py
Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst [new file with mode: 0644]

index 67b744604c189bcdfd04128d7a6ad3d829fe09e6..c608ba0954f32c84724dc1758658bf715804cf1a 100644 (file)
@@ -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):
index 0d0c2f1eccb84120c8cbd75dcf943643912f613f..964cc85d53153bde9aecbfcb021040fc57959be5 100644 (file)
@@ -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"])
diff --git a/Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst b/Misc/NEWS.d/next/Library/2022-05-10-07-57-27.gh-issue-92550.Rk_UzM.rst
new file mode 100644 (file)
index 0000000..1f0fde3
--- /dev/null
@@ -0,0 +1 @@
+Fix :meth:`pathlib.Path.rglob` for empty pattern.