summaryrefslogtreecommitdiff
path: root/coverage/collector.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2020-09-13 15:47:15 -0400
committerNed Batchelder <ned@nedbatchelder.com>2020-09-13 15:48:56 -0400
commit039ef0959c3f21fe0991204c19fb99fab14055f5 (patch)
tree3058128babbc49c88618e696ea28d35445f5763f /coverage/collector.py
parent24eb6fdc8495f969ffeb724f2e96d3941442dd2d (diff)
downloadpython-coveragepy-git-039ef0959c3f21fe0991204c19fb99fab14055f5.tar.gz
If a plugin is disabled, don't try to record its file tracers. #1011
Diffstat (limited to 'coverage/collector.py')
-rw-r--r--coverage/collector.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/coverage/collector.py b/coverage/collector.py
index 3545ab1e..9333d66a 100644
--- a/coverage/collector.py
+++ b/coverage/collector.py
@@ -196,6 +196,8 @@ class Collector(object):
# handle them.
self.file_tracers = {}
+ self.disabled_plugins = set()
+
# The .should_trace_cache attribute is a cache from file names to
# coverage.FileDisposition objects, or None. When a file is first
# considered for tracing, a FileDisposition is obtained from
@@ -419,6 +421,10 @@ class Collector(object):
return dict((self.cached_mapped_file(k), v) for k, v in items if v)
+ def plugin_was_disabled(self, plugin):
+ """Record that `plugin` was disabled during the run."""
+ self.disabled_plugins.add(plugin._coverage_plugin_name)
+
def flush_data(self):
"""Save the collected data to our associated `CoverageData`.
@@ -434,7 +440,12 @@ class Collector(object):
self.covdata.add_arcs(self.mapped_file_dict(self.data))
else:
self.covdata.add_lines(self.mapped_file_dict(self.data))
- self.covdata.add_file_tracers(self.mapped_file_dict(self.file_tracers))
+
+ file_tracers = {
+ k: v for k, v in self.file_tracers.items()
+ if v not in self.disabled_plugins
+ }
+ self.covdata.add_file_tracers(self.mapped_file_dict(file_tracers))
self._clear_data()
return True