From cb67b1feb2d68972f0eeb81a0e20b836b64c21dd Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 9 Oct 2022 18:41:24 -0400 Subject: feat: implicitly combine relative paths --- coverage/files.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'coverage/files.py') diff --git a/coverage/files.py b/coverage/files.py index 87a18bc2..2c520b8a 100644 --- a/coverage/files.py +++ b/coverage/files.py @@ -409,6 +409,20 @@ class PathAliases: f"producing {new!r}" ) return new + + # If we get here, no pattern matched. + + if self.relative and not isabs_anywhere(path): + parts = re.split(r"[/\\]", path) + if len(parts) > 1: + dir1 = parts[0] + pattern = f"*/{dir1}" + regex = rf"^(.*[\\/])?{re.escape(dir1)}[\\/]" + result = f"{dir1}{os.sep}" + self.debugfn(f"Generating rule: {pattern!r} -> {result!r} using regex {regex!r}") + self.aliases.append((pattern, re.compile(regex), result)) + return self.map(path) + self.debugfn(f"No rules match, path {path!r} is unchanged") return path -- cgit v1.2.1