https://github.com/python/cpython/commit/aeffc7f8951e04258f0fd8cadfa6cd8b704730f6
commit: aeffc7f8951e04258f0fd8cadfa6cd8b704730f6
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2024-02-11T12:24:13+02:00
summary:

gh-79382: Fix recursive glob() with trailing "**" (GH-115134)

Trailing "**" no longer allows to match files and non-existing paths in
recursive glob().

files:
A Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst
M Lib/glob.py
M Lib/test/test_glob.py

diff --git a/Lib/glob.py b/Lib/glob.py
index 4a335a10766cf4..343be78a73b20a 100644
--- a/Lib/glob.py
+++ b/Lib/glob.py
@@ -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)
 
diff --git a/Lib/test/test_glob.py b/Lib/test/test_glob.py
index aa5fac8eca1354..8b2ea8f89f5daf 100644
--- a/Lib/test/test_glob.py
+++ b/Lib/test/test_glob.py
@@ -333,6 +333,17 @@ def test_recursive_glob(self):
             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
index 00000000000000..5eb1888943186a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst
@@ -0,0 +1,2 @@
+Trailing ``**`` no longer allows to match files and non-existing paths in
+recursive :func:`~glob.glob`.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to