summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
Diffstat (limited to 'coverage')
-rw-r--r--coverage/control.py8
-rw-r--r--coverage/report.py5
-rw-r--r--coverage/xmlreport.py7
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