diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/cmdline.py | 6 | ||||
-rw-r--r-- | coverage/control.py | 4 | ||||
-rw-r--r-- | coverage/xmlreport.py | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py index 7af7913e..059d42a2 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -446,6 +446,7 @@ CMDS = { Opts.include, Opts.omit, Opts.output_xml, + Opts.skip_empty, ] + GLOBAL_ARGS, usage="[options] [modules]", description="Generate an XML report of coverage results." @@ -616,7 +617,10 @@ class CoverageScript(object): ) elif options.action == "xml": outfile = options.outfile - total = self.coverage.xml_report(outfile=outfile, **report_args) + total = self.coverage.xml_report( + outfile=outfile, skip_empty=options.skip_empty, + **report_args + ) elif options.action == "json": outfile = options.outfile total = self.coverage.json_report( diff --git a/coverage/control.py b/coverage/control.py index 14c22eb1..bd7ba2e6 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -947,7 +947,7 @@ class Coverage(object): def xml_report( self, morfs=None, outfile=None, ignore_errors=None, - omit=None, include=None, contexts=None, + omit=None, include=None, contexts=None, skip_empty=None, ): """Generate an XML report of coverage results. @@ -963,7 +963,7 @@ class Coverage(object): """ with override_config(self, ignore_errors=ignore_errors, report_omit=omit, report_include=include, - xml_output=outfile, report_contexts=contexts, + xml_output=outfile, report_contexts=contexts, skip_empty=skip_empty, ): return render_report(self.config.xml_output, XmlReporter(self), morfs) diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py index ad44775f..6d012ee6 100644 --- a/coverage/xmlreport.py +++ b/coverage/xmlreport.py @@ -142,6 +142,10 @@ class XmlReporter(object): def xml_file(self, fr, analysis, has_arcs): """Add to the XML report for a single file.""" + if self.config.skip_empty: + if analysis.numbers.n_statements == 0: + return + # Create the 'lines' and 'package' XML elements, which # are populated later. Note that a package == a directory. filename = fr.filename.replace("\\", "/") |