diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2021-11-13 08:09:19 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-11-13 12:33:11 -0500 |
commit | 5ca980dabd71aa74d90351a6d4e88cf101d65ded (patch) | |
tree | fbc48740076572aaf3a55c1405d40665ead83434 /coverage/cmdline.py | |
parent | 9a72bf4bc964bc8062627d6ecd6fb8c8d1e5dec6 (diff) | |
download | python-coveragepy-git-5ca980dabd71aa74d90351a6d4e88cf101d65ded.tar.gz |
feat: 'debug data' now enumerates combinable files also
Diffstat (limited to 'coverage/cmdline.py')
-rw-r--r-- | coverage/cmdline.py | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py index e996ffff..f3a466e3 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -17,7 +17,7 @@ import coverage from coverage import Coverage from coverage import env from coverage.collector import CTracer -from coverage.data import line_counts +from coverage.data import CoverageData, combinable_files, line_counts from coverage.debug import info_formatter, info_header, short_stack from coverage.exceptions import BaseCoverageException, ExceptionDuringRun, NoSource from coverage.execfile import PyRunner @@ -601,8 +601,8 @@ class CoverageScript: elif options.action == "combine": if options.append: self.coverage.load() - data_dirs = args or None - self.coverage.combine(data_dirs, strict=True, keep=bool(options.keep)) + data_paths = args or None + self.coverage.combine(data_paths, strict=True, keep=bool(options.keep)) self.coverage.save() return OK @@ -786,23 +786,12 @@ class CoverageScript: for line in info_formatter(sys_info): print(f" {line}") elif info == 'data': - self.coverage.load() - data = self.coverage.get_data() print(info_header("data")) - print(f"path: {data.data_filename()}") - if data: - print(f"has_arcs: {data.has_arcs()!r}") - summary = line_counts(data, fullpath=True) - filenames = human_sorted(summary.keys()) - print(f"\n{len(filenames)} files:") - for f in filenames: - line = f"{f}: {summary[f]} lines" - plugin = data.file_tracer(f) - if plugin: - line += f" [{plugin}]" - print(line) - else: - print("No data collected") + data_file = self.coverage.config.data_file + self.do_debug_data_file(data_file) + for filename in combinable_files(data_file): + print("-----") + self.do_debug_data_file(filename) elif info == 'config': print(info_header("config")) config_info = self.coverage.config.__dict__.items() @@ -817,6 +806,27 @@ class CoverageScript: return OK + def do_debug_data_file(self, filename): + """Implementation of 'coverage debug data'.""" + data = CoverageData(filename) + filename = data.data_filename() + print(f"path: {filename}") + if not os.path.exists(filename): + print("No data collected: file doesn't exist") + return + data.read() + print(f"has_arcs: {data.has_arcs()!r}") + summary = line_counts(data, fullpath=True) + filenames = human_sorted(summary.keys()) + nfiles = len(filenames) + print(f"{nfiles} file{'' if nfiles == 1 else 's'}:") + for f in filenames: + line = f"{f}: {summary[f]} line{'' if summary[f] == 1 else 's'}" + plugin = data.file_tracer(f) + if plugin: + line += f" [{plugin}]" + print(line) + def unshell_list(s): """Turn a command-line argument into a list.""" |