diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-11-26 08:37:21 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-11-26 08:37:21 -0500 |
commit | 484647dc3a3d649543ebb6fcd62701fc84e0ddba (patch) | |
tree | 2abccb2a3946ce39a2bfd6596a04ce09dc812633 /coverage | |
parent | 0ecc4917ff57918eefb7a90e163fd4bfa9b923d4 (diff) | |
download | python-coveragepy-git-484647dc3a3d649543ebb6fcd62701fc84e0ddba.tar.gz |
When reporting, don't fall over if there's no data to report on. Fixes issue #37.
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 |