diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2019-11-17 08:10:41 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-11-17 08:10:41 -0500 |
commit | d32835d1684a3d619aa04c8b10c387259700fa19 (patch) | |
tree | 48d050c1cf7a6e37a159705f94088f0be508924e | |
parent | e72fff05663c80268841a4fd77b40fbc2988e25d (diff) | |
download | python-coveragepy-git-d32835d1684a3d619aa04c8b10c387259700fa19.tar.gz |
Clean-ups I noticed while doing something else
-rw-r--r-- | coverage/collector.py | 44 | ||||
-rw-r--r-- | coverage/control.py | 16 | ||||
-rw-r--r-- | tests/goldtest.py | 2 | ||||
-rw-r--r-- | tests/test_html.py | 3 | ||||
-rw-r--r-- | tests/test_xml.py | 4 |
5 files changed, 35 insertions, 34 deletions
diff --git a/coverage/collector.py b/coverage/collector.py index a032b70d..703f65b8 100644 --- a/coverage/collector.py +++ b/coverage/collector.py @@ -389,6 +389,25 @@ class Collector(object): except KeyError: return self.abs_file_cache.setdefault(key, abs_file(filename)) + def abs_file_dict(self, d): + """Return a dict like d, but with keys modified by `abs_file`.""" + # The call to litems() ensures that the GIL protects the dictionary + # iterator against concurrent modifications by tracers running + # in other threads. We try three times in case of concurrent + # access, hoping to get a clean copy. + runtime_err = None + for _ in range(3): + try: + items = litems(d) + except RuntimeError as ex: + runtime_err = ex + else: + break + else: + raise runtime_err + + return dict((self.cached_abs_file(k), v) for k, v in items if v) + def flush_data(self): """Save the collected data to our associated `CoverageData`. @@ -400,30 +419,11 @@ class Collector(object): if not self._activity(): return False - def abs_file_dict(d): - """Return a dict like d, but with keys modified by `abs_file`.""" - # The call to litems() ensures that the GIL protects the dictionary - # iterator against concurrent modifications by tracers running - # in other threads. We try three times in case of concurrent - # access, hoping to get a clean copy. - runtime_err = None - for _ in range(3): - try: - items = litems(d) - except RuntimeError as ex: - runtime_err = ex - else: - break - else: - raise runtime_err - - return dict((self.cached_abs_file(k), v) for k, v in items if v) - if self.branch: - self.covdata.add_arcs(abs_file_dict(self.data)) + self.covdata.add_arcs(self.abs_file_dict(self.data)) else: - self.covdata.add_lines(abs_file_dict(self.data)) - self.covdata.add_file_tracers(abs_file_dict(self.file_tracers)) + self.covdata.add_lines(self.abs_file_dict(self.data)) + self.covdata.add_file_tracers(self.abs_file_dict(self.file_tracers)) self._clear_data() return True diff --git a/coverage/control.py b/coverage/control.py index 5282eb59..0f306aa2 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -736,14 +736,14 @@ class Coverage(object): if plugin_name: plugin = self._plugins.get(plugin_name) - if plugin: - file_reporter = plugin.file_reporter(abs_morf) - if file_reporter is None: - raise CoverageException( - "Plugin %r did not provide a file reporter for %r." % ( - plugin._coverage_plugin_name, morf - ) - ) + if plugin: + file_reporter = plugin.file_reporter(abs_morf) + if file_reporter is None: + raise CoverageException( + "Plugin %r did not provide a file reporter for %r." % ( + plugin._coverage_plugin_name, morf + ) + ) if file_reporter == "python": file_reporter = PythonFileReporter(morf, self) diff --git a/tests/goldtest.py b/tests/goldtest.py index b5e32f5f..16301417 100644 --- a/tests/goldtest.py +++ b/tests/goldtest.py @@ -12,8 +12,6 @@ import re import sys import xml.etree.ElementTree -from unittest_mixins import change_dir # pylint: disable=unused-import - from coverage import env from tests.coveragetest import TESTS_DIR diff --git a/tests/test_html.py b/tests/test_html.py index 74cc15d9..504c5e80 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -13,6 +13,7 @@ import re import sys import mock +from unittest_mixins import change_dir import coverage from coverage.backward import unicode_class @@ -24,7 +25,7 @@ from coverage.report import get_analysis_to_report from tests.coveragetest import CoverageTest, TESTS_DIR from tests.goldtest import gold_path -from tests.goldtest import change_dir, compare, contains, doesnt_contain, contains_any +from tests.goldtest import compare, contains, doesnt_contain, contains_any class HtmlTestHelpers(CoverageTest): diff --git a/tests/test_xml.py b/tests/test_xml.py index 658a6ab6..25c9ee0c 100644 --- a/tests/test_xml.py +++ b/tests/test_xml.py @@ -9,12 +9,14 @@ import os.path import re from xml.etree import ElementTree +from unittest_mixins import change_dir + import coverage from coverage.backward import import_local_file from coverage.files import abs_file from tests.coveragetest import CoverageTest -from tests.goldtest import change_dir, compare, gold_path +from tests.goldtest import compare, gold_path class XmlTestHelpers(CoverageTest): |