]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-79382: Fix recursive glob() with trailing "**" (GH-115134) (GH-115291)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 11 Feb 2024 11:04:02 +0000 (12:04 +0100)
committerGitHub <noreply@github.com>
Sun, 11 Feb 2024 11:04:02 +0000 (11:04 +0000)
Trailing "**" no longer allows to match files and non-existing paths in
recursive glob().
(cherry picked from commit aeffc7f8951e04258f0fd8cadfa6cd8b704730f6)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/glob.py
Lib/test/test_glob.py
Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst [new file with mode: 0644]

index a7256422d520fb68ee22f77e1b39d2b0314a2cd0..50beef37f45e1f0e8a8ded6fe6232c39fd7babdd 100644 (file)
@@ -132,7 +132,8 @@ def glob1(dirname, pattern):
 
 def _glob2(dirname, pattern, dir_fd, dironly, include_hidden=False):
     assert _isrecursive(pattern)
-    yield pattern[:0]
+    if not dirname or _isdir(dirname, dir_fd):
+        yield pattern[:0]
     yield from _rlistdir(dirname, dir_fd, dironly,
                          include_hidden=include_hidden)
 
index f4b5821f408cb485dd2349fd29a651fad4dbec24..4f4649f966daf123a30831c92168350b31790ff2 100644 (file)
@@ -332,6 +332,17 @@ class GlobTests(unittest.TestCase):
             eq(glob.glob('**', recursive=True, include_hidden=True),
                [join(*i) for i in full+rec])
 
+    def test_glob_non_directory(self):
+        eq = self.assertSequencesEqual_noorder
+        eq(self.rglob('EF'), self.joins(('EF',)))
+        eq(self.rglob('EF', ''), [])
+        eq(self.rglob('EF', '*'), [])
+        eq(self.rglob('EF', '**'), [])
+        eq(self.rglob('nonexistent'), [])
+        eq(self.rglob('nonexistent', ''), [])
+        eq(self.rglob('nonexistent', '*'), [])
+        eq(self.rglob('nonexistent', '**'), [])
+
     def test_glob_many_open_files(self):
         depth = 30
         base = os.path.join(self.tempdir, 'deep')
diff --git a/Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst b/Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst
new file mode 100644 (file)
index 0000000..5eb1888
--- /dev/null
@@ -0,0 +1,2 @@
+Trailing ``**`` no longer allows to match files and non-existing paths in
+recursive :func:`~glob.glob`.