summaryrefslogtreecommitdiff
path: root/coverage/xmlreport.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-01-19 18:03:21 -0500
committerNed Batchelder <ned@nedbatchelder.com>2015-01-19 18:03:21 -0500
commite03bfa80f990b0f30eedf4da3aa7cedfcb2ead27 (patch)
tree3aead9fa06c73eed9479e4a15099416a262ba740 /coverage/xmlreport.py
parentddf3884d15ac50d4cff3b15742bcb804588e4006 (diff)
downloadpython-coveragepy-git-e03bfa80f990b0f30eedf4da3aa7cedfcb2ead27.tar.gz
Fix bad regression: XML report now reports packages again. #235
Diffstat (limited to 'coverage/xmlreport.py')
-rw-r--r--coverage/xmlreport.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index 45a4652e..3510c5b6 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -1,11 +1,14 @@
"""XML reporting for coverage.py"""
-import os, sys, time
+import os
+import sys
+import time
import xml.dom.minidom
from coverage import __url__, __version__
from coverage.report import Reporter
+
def rate(hit, num):
"""Return the fraction of `hit`/`num`, as a string."""
if num == 0:
@@ -118,7 +121,10 @@ class XmlReporter(Reporter):
# Create the 'lines' and 'package' XML elements, which
# are populated later. Note that a package == a directory.
- package_name = cu.name.rpartition(".")[0]
+ filename = cu.file_locator.relative_filename(cu.filename)
+ filename = filename.replace("\\", "/")
+ dirname = os.path.dirname(filename) or "."
+ package_name = dirname.replace("/", ".")
className = cu.name
self.source_paths.add(cu.file_locator.relative_dir.rstrip('/'))
@@ -131,9 +137,8 @@ class XmlReporter(Reporter):
xlines = self.xml_out.createElement("lines")
xclass.appendChild(xlines)
- xclass.setAttribute("name", className)
- filename = cu.file_locator.relative_filename(cu.filename)
- xclass.setAttribute("filename", filename.replace("\\", "/"))
+ xclass.setAttribute("name", os.path.relpath(filename, dirname))
+ xclass.setAttribute("filename", filename)
xclass.setAttribute("complexity", "0")
branch_stats = analysis.branch_stats()
@@ -151,7 +156,8 @@ class XmlReporter(Reporter):
if line in branch_stats:
total, taken = branch_stats[line]
xline.setAttribute("branch", "true")
- xline.setAttribute("condition-coverage",
+ xline.setAttribute(
+ "condition-coverage",
"%d%% (%d/%d)" % (100*taken/total, taken, total)
)
xlines.appendChild(xline)
@@ -174,6 +180,7 @@ class XmlReporter(Reporter):
else:
branch_rate = "0"
xclass.setAttribute("branch-rate", branch_rate)
+
package[0][className] = xclass
package[1] += class_hits
package[2] += class_lines