summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-11-13 08:09:19 -0500
committerNed Batchelder <ned@nedbatchelder.com>2021-11-13 08:09:19 -0500
commitffb064bae38a538b45b97944aa7eb735f881b0a6 (patch)
tree96b224feb81f2d8ec5c2674fa2270f6c36923e3c
parentedb0e698a7165b69bd5f19908d365b398bf4118f (diff)
downloadpython-coveragepy-git-nedbat/smarter-debug-data.tar.gz
refactor: rejigger 'debug data' codenedbat/smarter-debug-data
-rw-r--r--coverage/cmdline.py41
-rw-r--r--tests/test_cmdline.py12
2 files changed, 28 insertions, 25 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index e996ffff..92c51a7a 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -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,7 @@ 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")
+ self.do_debug_data()
elif info == 'config':
print(info_header("config"))
config_info = self.coverage.config.__dict__.items()
@@ -817,6 +801,25 @@ class CoverageScript:
return OK
+ def do_debug_data(self):
+ 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")
+
def unshell_list(s):
"""Turn a command-line argument into a list."""
diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py
index 4c0776fb..aa7f3831 100644
--- a/tests/test_cmdline.py
+++ b/tests/test_cmdline.py
@@ -817,24 +817,24 @@ class CmdLineWithFilesTest(BaseCmdLineTest):
data.write()
self.command_line("debug data")
- assert self.stdout() == textwrap.dedent("""\
+ assert self.stdout() == textwrap.dedent(f"""\
-- data ------------------------------------------------------
- path: FILENAME
+ path: {data.data_filename()}
has_arcs: False
2 files:
file1.py: 17 lines [a_plugin]
file2.py: 23 lines
- """).replace("FILENAME", data.data_filename())
+ """)
def test_debug_data_with_no_data(self):
data = CoverageData()
self.command_line("debug data")
- assert self.stdout() == textwrap.dedent("""\
+ assert self.stdout() == textwrap.dedent(f"""\
-- data ------------------------------------------------------
- path: FILENAME
+ path: {data.data_filename()}
No data collected
- """).replace("FILENAME", data.data_filename())
+ """)
class CmdLineStdoutTest(BaseCmdLineTest):