diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2019-11-17 07:52:24 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-12-01 08:35:04 -0500 |
commit | 013e9de08c0747fddf92cc1fdac1d1f39185aa3b (patch) | |
tree | ada87dee565d5b167e424df6d9143ec49de349fa /coverage/control.py | |
parent | 10e41ab0dc165b3fd010345ab0fb1ed319d2f230 (diff) | |
download | python-coveragepy-git-013e9de08c0747fddf92cc1fdac1d1f39185aa3b.tar.gz |
Experimental: relative_files to support relative file names.
Diffstat (limited to 'coverage/control.py')
-rw-r--r-- | coverage/control.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/coverage/control.py b/coverage/control.py index 0f306aa2..3a19695a 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -20,7 +20,7 @@ from coverage.context import should_start_context_test_function, combine_context from coverage.data import CoverageData, combine_parallel_data from coverage.debug import DebugControl, write_formatted_info from coverage.disposition import disposition_debug_msg -from coverage.files import PathAliases, set_relative_directory, abs_file +from coverage.files import PathAliases, abs_file, relative_filename, set_relative_directory from coverage.html import HtmlReporter from coverage.inorout import InOrOut from coverage.jsonreport import JsonReporter @@ -198,6 +198,7 @@ class Coverage(object): self._data_suffix = self._run_suffix = None self._exclude_re = None self._debug = None + self._file_mapper = None # State machine variables: # Have we initialized everything? @@ -238,6 +239,7 @@ class Coverage(object): self._exclude_re = {} set_relative_directory() + self._file_mapper = relative_filename if self.config.relative_files else abs_file # Load plugins self._plugins = Plugins.load_plugins(self.config.plugins, self.config, self._debug) @@ -405,6 +407,7 @@ class Coverage(object): should_trace=self._should_trace, check_include=self._check_include_omit_etc, should_start_context=should_start_context, + file_mapper=self._file_mapper, timid=self.config.timid, branch=self.config.branch, warn=self._warn, @@ -671,6 +674,7 @@ class Coverage(object): # mark completely unexecuted files as 0% covered. if self._data: for file_path, plugin_name in self._inorout.find_possibly_unexecuted_files(): + file_path = self._file_mapper(file_path) self._data.touch_file(file_path, plugin_name) if self.config.note: @@ -723,7 +727,7 @@ class Coverage(object): if not isinstance(it, FileReporter): it = self._get_file_reporter(it) - return Analysis(data, it) + return Analysis(data, it, self._file_mapper) def _get_file_reporter(self, morf): """Get a FileReporter for a module or file name.""" @@ -731,13 +735,13 @@ class Coverage(object): file_reporter = "python" if isinstance(morf, string_class): - abs_morf = abs_file(morf) - plugin_name = self._data.file_tracer(abs_morf) + mapped_morf = self._file_mapper(morf) + plugin_name = self._data.file_tracer(mapped_morf) if plugin_name: plugin = self._plugins.get(plugin_name) if plugin: - file_reporter = plugin.file_reporter(abs_morf) + file_reporter = plugin.file_reporter(mapped_morf) if file_reporter is None: raise CoverageException( "Plugin %r did not provide a file reporter for %r." % ( |