diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2020-09-13 15:47:15 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2020-09-13 15:48:56 -0400 |
commit | 039ef0959c3f21fe0991204c19fb99fab14055f5 (patch) | |
tree | 3058128babbc49c88618e696ea28d35445f5763f /coverage | |
parent | 24eb6fdc8495f969ffeb724f2e96d3941442dd2d (diff) | |
download | python-coveragepy-git-039ef0959c3f21fe0991204c19fb99fab14055f5.tar.gz |
If a plugin is disabled, don't try to record its file tracers. #1011
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/collector.py | 13 | ||||
-rw-r--r-- | coverage/control.py | 4 |
2 files changed, 16 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 diff --git a/coverage/control.py b/coverage/control.py index 7c4a4828..2d75417e 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -709,6 +709,10 @@ class Coverage(object): self._init_data(suffix=None) self._post_init() + for plugin in self._plugins: + if not plugin._coverage_enabled: + self._collector.plugin_was_disabled(plugin) + if self._collector and self._collector.flush_data(): self._post_save_work() |