diff options
-rw-r--r-- | coverage/control.py | 5 | ||||
-rw-r--r-- | coverage/report.py | 1 | ||||
-rw-r--r-- | coverage/xmlreport.py | 5 | ||||
-rw-r--r-- | test/farm/html/gold_a_xml/coverage.xml | 18 | ||||
-rw-r--r-- | test/farm/html/run_a_xml.py | 17 |
5 files changed, 40 insertions, 6 deletions
diff --git a/coverage/control.py b/coverage/control.py index 4cf97d40..d04445f8 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -321,11 +321,12 @@ class coverage: reporter.report( morfs, directory=directory, omit_prefixes=omit_prefixes) - def xml_report(self, morfs=None, ignore_errors=False, omit_prefixes=None): + def xml_report(self, morfs=None, outfile=None, ignore_errors=False, + omit_prefixes=None): """Generate an XML report of coverage results. The report is compatible with Cobertura reports. """ reporter = XmlReporter(self, ignore_errors) - reporter.report(morfs, omit_prefixes=omit_prefixes) + reporter.report(morfs, omit_prefixes=omit_prefixes, outfile=outfile) diff --git a/coverage/report.py b/coverage/report.py index 4475b00e..561973b5 100644 --- a/coverage/report.py +++ b/coverage/report.py @@ -59,4 +59,3 @@ class Reporter(object): except: if not self.ignore_errors: raise - diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py index 82d06f6b..7fb2ba67 100644 --- a/coverage/xmlreport.py +++ b/coverage/xmlreport.py @@ -48,7 +48,7 @@ class XmlReporter(Reporter): c.appendChild(lines) className = fname.replace('.', '_') c.setAttribute("name", className) - c.setAttribute("filename", cu.name) + c.setAttribute("filename", cu.filename) c.setAttribute("complexity", "0.0") try: @@ -62,8 +62,7 @@ class XmlReporter(Reporter): # Q: can we get info about the number of times # a statement is executed? If so, that should be # recorded here. - if not line in missing: - l.setAttribute("hits", str(1)) + l.setAttribute("hits", str(int(not line in missing))) # Q: can we get info about whether this statement # is a branch? If so, that data should be diff --git a/test/farm/html/gold_a_xml/coverage.xml b/test/farm/html/gold_a_xml/coverage.xml new file mode 100644 index 00000000..9c67a55c --- /dev/null +++ b/test/farm/html/gold_a_xml/coverage.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" ?>
+<!DOCTYPE coverage
+ SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'>
+<coverage>
+ <packages>
+ <package branch-rate="0.0" complexity="0.0" line-rate="0.666666666667" name=".">
+ <classes>
+ <class branch-rate="0.0" complexity="0.0" filename="c:\ned\coverage\trunk\test\farm\html\src\a.py" line-rate="0.666666666667" name="a">
+ <lines>
+ <line branch="false" hits="1" number="3"/>
+ <line branch="false" hits="1" number="5"/>
+ <line branch="false" hits="0" number="7"/>
+ </lines>
+ </class>
+ </classes>
+ </package>
+ </packages>
+</coverage>
diff --git a/test/farm/html/run_a_xml.py b/test/farm/html/run_a_xml.py new file mode 100644 index 00000000..6df7dcd4 --- /dev/null +++ b/test/farm/html/run_a_xml.py @@ -0,0 +1,17 @@ +def html_it(): + """Run coverage and make an XML report for a.""" + import coverage + cov = coverage.coverage() + cov.start() + import a + cov.stop() + cov.xml_report(a, outfile=open("../xml/coverage.xml", 'w')) + +import os +if not os.path.exists("xml"): + os.makedirs("xml") + +runfunc(html_it, rundir="src") + +compare("xml", "gold_a_xml") +clean("xml") |