diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/control.py | 8 | ||||
-rw-r--r-- | coverage/report.py | 5 | ||||
-rw-r--r-- | coverage/xmlreport.py | 7 |
3 files changed, 14 insertions, 6 deletions
diff --git a/coverage/control.py b/coverage/control.py index e041cde7..4bcb4ed4 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -304,8 +304,12 @@ class coverage(object): """ if outfile: outfile = open(outfile, "w") - reporter = XmlReporter(self, ignore_errors) - reporter.report(morfs, omit_prefixes=omit_prefixes, outfile=outfile) + try: + reporter = XmlReporter(self, ignore_errors) + reporter.report( + morfs, omit_prefixes=omit_prefixes, outfile=outfile) + finally: + outfile.close() def sysinfo(self): """Return a list of key,value pairs showing internal information.""" diff --git a/coverage/report.py b/coverage/report.py index 7f3e3e02..c2215521 100644 --- a/coverage/report.py +++ b/coverage/report.py @@ -2,7 +2,7 @@ import os from coverage.codeunit import code_unit_factory -from coverage.misc import NoSource +from coverage.misc import CoverageException, NoSource class Reporter(object): """A base class for all reporters.""" @@ -45,6 +45,9 @@ class Reporter(object): """ self.find_code_units(morfs, omit_prefixes) + if not self.code_units: + raise CoverageException("No data to report.") + self.directory = directory if self.directory and not os.path.exists(self.directory): os.makedirs(self.directory) diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py index 0fe43712..2e31d9e9 100644 --- a/coverage/xmlreport.py +++ b/coverage/xmlreport.py @@ -30,7 +30,6 @@ class XmlReporter(Reporter): """ # Initial setup. outfile = outfile or sys.stdout - self.find_code_units(morfs, omit_prefixes) # Create the DOM that will store the data. impl = xml.dom.minidom.getDOMImplementation() @@ -39,8 +38,9 @@ class XmlReporter(Reporter): "http://cobertura.sourceforge.net/xml/coverage-03.dtd" ) self.xml_out = impl.createDocument(None, "coverage", docType) + + # Write header stuff. xcoverage = self.xml_out.documentElement - xcoverage.setAttribute("version", __version__) xcoverage.setAttribute("timestamp", str(int(time.time()*1000))) xcoverage.appendChild(self.xml_out.createComment( @@ -48,8 +48,9 @@ class XmlReporter(Reporter): )) xpackages = self.xml_out.createElement("packages") xcoverage.appendChild(xpackages) - self.packages = {} + # Call xml_file for each file in the data. + self.packages = {} self.report_files(self.xml_file, morfs, omit_prefixes=omit_prefixes) lnum_tot, lhits_tot = 0, 0 |