summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-10-26 19:07:03 -0400
committerNed Batchelder <ned@nedbatchelder.com>2021-10-26 19:17:19 -0400
commit93c9ca9f1b2e5d0b45dbf4b82c77aaf05b458bac (patch)
tree6b0e1cc009da5e33ca87e8fb096704b27afe1a8f /coverage
parent18cf3b897d4b1e1a66beda180ec151cc0dd4dbc3 (diff)
downloadpython-coveragepy-git-nedbat/dashq.tar.gz
feat: xml and json say what they are doing, and -q quiets everything. #1254nedbat/dashq
Diffstat (limited to 'coverage')
-rw-r--r--coverage/cmdline.py11
-rw-r--r--coverage/control.py4
-rw-r--r--coverage/jsonreport.py2
-rw-r--r--coverage/report.py5
-rw-r--r--coverage/xmlreport.py2
5 files changed, 20 insertions, 4 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index 81b87edf..e996ffff 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -146,6 +146,10 @@ class Opts:
"reported coverage percentages."
),
)
+ quiet = optparse.make_option(
+ '-q', '--quiet', action='store_true',
+ help="Don't print messages about what is happening.",
+ )
rcfile = optparse.make_option(
'', '--rcfile', action='store',
help=(
@@ -227,6 +231,7 @@ class CoverageOptionParser(optparse.OptionParser):
parallel_mode=None,
precision=None,
pylib=None,
+ quiet=None,
rcfile=True,
show_contexts=None,
show_missing=None,
@@ -340,6 +345,7 @@ CMDS = {
[
Opts.append,
Opts.keep,
+ Opts.quiet,
] + GLOBAL_ARGS,
usage="[options] <path1> <path2> ... <pathN>",
description=(
@@ -387,6 +393,7 @@ CMDS = {
Opts.include,
Opts.omit,
Opts.precision,
+ Opts.quiet,
Opts.show_contexts,
Opts.skip_covered,
Opts.no_skip_covered,
@@ -411,6 +418,7 @@ CMDS = {
Opts.omit,
Opts.output_json,
Opts.json_pretty_print,
+ Opts.quiet,
Opts.show_contexts,
] + GLOBAL_ARGS,
usage="[options] [modules]",
@@ -463,6 +471,7 @@ CMDS = {
Opts.include,
Opts.omit,
Opts.output_xml,
+ Opts.quiet,
Opts.skip_empty,
] + GLOBAL_ARGS,
usage="[options] [modules]",
@@ -576,7 +585,7 @@ class CoverageScript:
concurrency=options.concurrency,
check_preimported=True,
context=options.context,
- messages=True,
+ messages=not options.quiet,
)
if options.action == "debug":
diff --git a/coverage/control.py b/coverage/control.py
index defe9209..a96f558a 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -1006,7 +1006,7 @@ class Coverage:
ignore_errors=ignore_errors, report_omit=omit, report_include=include,
xml_output=outfile, report_contexts=contexts, skip_empty=skip_empty,
):
- return render_report(self.config.xml_output, XmlReporter(self), morfs)
+ return render_report(self.config.xml_output, XmlReporter(self), morfs, self._message)
def json_report(
self, morfs=None, outfile=None, ignore_errors=None,
@@ -1030,7 +1030,7 @@ class Coverage:
json_output=outfile, report_contexts=contexts, json_pretty_print=pretty_print,
json_show_contexts=show_contexts
):
- return render_report(self.config.json_output, JsonReporter(self), morfs)
+ return render_report(self.config.json_output, JsonReporter(self), morfs, self._message)
def sys_info(self):
"""Return a list of (key, value) pairs showing internal information."""
diff --git a/coverage/jsonreport.py b/coverage/jsonreport.py
index daebca11..c87bb0e7 100644
--- a/coverage/jsonreport.py
+++ b/coverage/jsonreport.py
@@ -14,6 +14,8 @@ from coverage.results import Numbers
class JsonReporter:
"""A reporter for writing JSON coverage results."""
+ report_type = "JSON report"
+
def __init__(self, coverage):
self.coverage = coverage
self.config = self.coverage.config
diff --git a/coverage/report.py b/coverage/report.py
index 82994ecf..112dcae1 100644
--- a/coverage/report.py
+++ b/coverage/report.py
@@ -2,6 +2,7 @@
# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
"""Reporter foundation for coverage.py."""
+
import sys
from coverage.exceptions import CoverageException, NoSource, NotPython
@@ -9,7 +10,7 @@ from coverage.files import prep_patterns, FnmatchMatcher
from coverage.misc import ensure_dir_for_file, file_be_gone
-def render_report(output_path, reporter, morfs):
+def render_report(output_path, reporter, morfs, msgfn):
"""Run a one-file report generator, managing the output file.
This function ensures the output file is ready to be written to. Then writes
@@ -40,6 +41,8 @@ def render_report(output_path, reporter, morfs):
file_to_close.close()
if delete_file:
file_be_gone(output_path) # pragma: part covered (doesn't return)
+ else:
+ msgfn(f"Wrote {reporter.report_type} to {output_path}")
def get_analysis_to_report(coverage, morfs):
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index 6dc330f1..8c8409dc 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -30,6 +30,8 @@ def rate(hit, num):
class XmlReporter:
"""A reporter for writing Cobertura-style XML coverage results."""
+ report_type = "XML report"
+
def __init__(self, coverage):
self.coverage = coverage
self.config = self.coverage.config