diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/control.py | 7 | ||||
-rw-r--r-- | coverage/data.py | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/coverage/control.py b/coverage/control.py index dd7d705b..28c8850f 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -9,6 +9,7 @@ from coverage.collector import Collector from coverage.config import CoverageConfig from coverage.data import CoverageData from coverage.files import FileLocator, TreeMatcher, FnmatchMatcher +from coverage.files import find_python_files from coverage.html import HtmlReporter from coverage.misc import CoverageException, bool_or_none from coverage.results import Analysis, Numbers @@ -303,6 +304,7 @@ class coverage(object): else: pkg_file = self._source_for_file(pkg_file) pkg_file = self.file_locator.canonical_filename(pkg_file) + self.source.append(pkg_file) self.source_match.add(pkg_file) for pkg in found: @@ -437,6 +439,11 @@ class coverage(object): if not summary: self._warn("No data was collected.") + # Find files that were never executed at all. + for src in self.source: + for py_file in find_python_files(src): + self.data.touch_file(py_file) + self._harvested = True # Backward compatibility with version 1. diff --git a/coverage/data.py b/coverage/data.py index 6d49f710..30119d9c 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -207,6 +207,10 @@ class CoverageData(object): for filename, arcs in arc_data.items(): self.arcs.setdefault(filename, {}).update(arcs) + def touch_file(self, filename): + """Ensure that `filename` appears in the data, empty if needed.""" + self.lines.setdefault(filename, {}) + def executed_files(self): """A list of all files that had been measured as executed.""" return list(self.lines.keys()) |