summaryrefslogtreecommitdiff
path: root/coverage/data.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-11-16 08:57:02 -0500
committerNed Batchelder <ned@nedbatchelder.com>2021-11-16 17:56:09 -0500
commit25ea7a956ab05d24fed61519c83a64462597d712 (patch)
treeef91fc4839850e6137efacc0b4c59cb09a2b52d6 /coverage/data.py
parentf3f2f2a151ba7cc3251388f8c167b52499527a18 (diff)
downloadpython-coveragepy-git-25ea7a956ab05d24fed61519c83a64462597d712.tar.gz
refactor: move this so I can use it ad-hoc more easily
Diffstat (limited to 'coverage/data.py')
-rw-r--r--coverage/data.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/coverage/data.py b/coverage/data.py
index c70993ad..2765c4a3 100644
--- a/coverage/data.py
+++ b/coverage/data.py
@@ -14,7 +14,7 @@ import glob
import os.path
from coverage.exceptions import CoverageException, NoDataError
-from coverage.misc import file_be_gone
+from coverage.misc import file_be_gone, human_sorted, plural
from coverage.sqldata import CoverageData
@@ -139,3 +139,25 @@ def combine_parallel_data(
if strict and not files_combined:
raise NoDataError("No usable data files")
+
+
+def debug_data_file(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{plural(nfiles)}:")
+ for f in filenames:
+ line = f"{f}: {summary[f]} line{plural(summary[f])}"
+ plugin = data.file_tracer(f)
+ if plugin:
+ line += f" [{plugin}]"
+ print(line)