summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2022-10-02 21:39:36 -0400
committerNed Batchelder <ned@nedbatchelder.com>2022-10-15 13:58:50 -0400
commit7836b4faa320cccdeb25966dd8fefcf89107c564 (patch)
tree2e6a43d2c59173696b856f1a588c872d8601fa42 /coverage
parent60fa1306d2b02aa718a21c8e9da10fc063063fe7 (diff)
downloadpython-coveragepy-git-7836b4faa320cccdeb25966dd8fefcf89107c564.tar.gz
fix: */foo matches "foo/x.py", to help with combining relative file names. #991
Diffstat (limited to 'coverage')
-rw-r--r--coverage/files.py2
-rw-r--r--coverage/misc.py2
2 files changed, 3 insertions, 1 deletions
diff --git a/coverage/files.py b/coverage/files.py
index 4475f2f1..87a18bc2 100644
--- a/coverage/files.py
+++ b/coverage/files.py
@@ -296,6 +296,8 @@ def fnmatches_to_regex(patterns, case_insensitive=False, partial=False):
"""
regexes = (fnmatch.translate(pattern) for pattern in patterns)
+ # */ at the start should also match nothing.
+ regexes = (re.sub(r"^\(\?s:\.\*(\\\\|/)", r"(?s:^(.*\1)?", regex) for regex in regexes)
# Be agnostic: / can mean backslash or slash.
regexes = (re.sub(r"/", r"[\\\\/]", regex) for regex in regexes)
diff --git a/coverage/misc.py b/coverage/misc.py
index e9b1b8eb..98a5d139 100644
--- a/coverage/misc.py
+++ b/coverage/misc.py
@@ -181,7 +181,7 @@ def bool_or_none(b):
def join_regex(regexes):
- """Combine a list of regexes into one that matches any of them."""
+ """Combine a series of regexes into one that matches any of them."""
return "|".join(f"(?:{r})" for r in regexes)