summaryrefslogtreecommitdiff
path: root/coverage/control.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2022-11-26 14:09:29 -0500
committerNed Batchelder <ned@nedbatchelder.com>2022-11-27 09:32:40 -0500
commit0818611c63a243e35a710d325bc63ffa93ef3cd7 (patch)
treeb2482d1247be061f99799e458f15884183f81df3 /coverage/control.py
parentff9839f5e2511f0c19332648e4dc61677a702ee6 (diff)
downloadpython-coveragepy-git-0818611c63a243e35a710d325bc63ffa93ef3cd7.tar.gz
feat: implicit path mapping during reporting. #1212
Diffstat (limited to 'coverage/control.py')
-rw-r--r--coverage/control.py36
1 files changed, 26 insertions, 10 deletions
diff --git a/coverage/control.py b/coverage/control.py
index 2e58ad85..c0497478 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -733,6 +733,18 @@ class Coverage:
data = self.get_data()
data.write()
+ def _make_aliases(self):
+ """Create a PathAliases from our configuration."""
+ aliases = PathAliases(
+ debugfn=(self._debug.write if self._debug.should("pathmap") else None),
+ relative=self.config.relative_files,
+ )
+ for paths in self.config.paths.values():
+ result = paths[0]
+ for pattern in paths[1:]:
+ aliases.add(pattern, result)
+ return aliases
+
def combine(self, data_paths=None, strict=False, keep=False):
"""Combine together a number of similarly-named coverage data files.
@@ -764,18 +776,9 @@ class Coverage:
self._post_init()
self.get_data()
- aliases = PathAliases(
- debugfn=(self._debug.write if self._debug.should("pathmap") else None),
- relative=self.config.relative_files,
- )
- for paths in self.config.paths.values():
- result = paths[0]
- for pattern in paths[1:]:
- aliases.add(pattern, result)
-
combine_parallel_data(
self._data,
- aliases=aliases,
+ aliases=self._make_aliases(),
data_paths=data_paths,
strict=strict,
keep=keep,
@@ -925,6 +928,13 @@ class Coverage:
file_reporters = [self._get_file_reporter(morf) for morf in morfs]
return file_reporters
+ def _prepare_data_for_reporting(self):
+ """Re-map data before reporting, to get implicit 'combine' behavior."""
+ if self.config.paths:
+ mapped_data = CoverageData(warn=self._warn, debug=self._debug, no_disk=True)
+ mapped_data.update(self._data, aliases=self._make_aliases())
+ self._data = mapped_data
+
def report(
self,
morfs=None,
@@ -990,6 +1000,7 @@ class Coverage:
The `format` parameter.
"""
+ self._prepare_data_for_reporting()
with override_config(
self,
ignore_errors=ignore_errors,
@@ -1034,6 +1045,7 @@ class Coverage:
print("The annotate command will be removed in a future version.")
print("Get in touch if you still use it: ned@nedbatchelder.com")
+ self._prepare_data_for_reporting()
with override_config(
self,
ignore_errors=ignore_errors,
@@ -1083,6 +1095,7 @@ class Coverage:
changing the files in the report folder.
"""
+ self._prepare_data_for_reporting()
with override_config(
self,
ignore_errors=ignore_errors,
@@ -1123,6 +1136,7 @@ class Coverage:
Returns a float, the total percentage covered.
"""
+ self._prepare_data_for_reporting()
with override_config(
self,
ignore_errors=ignore_errors,
@@ -1157,6 +1171,7 @@ class Coverage:
.. versionadded:: 5.0
"""
+ self._prepare_data_for_reporting()
with override_config(
self,
ignore_errors=ignore_errors,
@@ -1187,6 +1202,7 @@ class Coverage:
.. versionadded:: 6.3
"""
+ self._prepare_data_for_reporting()
with override_config(
self,
ignore_errors=ignore_errors,