summaryrefslogtreecommitdiff
path: root/coverage/xmlreport.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-11-22 10:58:58 -0500
committerNed Batchelder <ned@nedbatchelder.com>2015-11-22 10:58:58 -0500
commit7889f390058da471c253390a20bde71d88ba0956 (patch)
treefb0dd2d6d2d46a7bff599b1b0796384b99b655df /coverage/xmlreport.py
parent5a38a3e5ff72fcd6fdb2e8b62345974eb96097da (diff)
downloadpython-coveragepy-7889f390058da471c253390a20bde71d88ba0956.tar.gz
XML <source> element properly reflects --source= option. #439
Diffstat (limited to 'coverage/xmlreport.py')
-rw-r--r--coverage/xmlreport.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index d7c2f44..3023f4b 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -4,6 +4,7 @@
"""XML reporting for coverage.py"""
import os
+import os.path
import sys
import time
import xml.dom.minidom
@@ -38,6 +39,10 @@ class XmlReporter(Reporter):
super(XmlReporter, self).__init__(coverage, config)
self.source_paths = set()
+ if config.source:
+ for src in config.source:
+ if os.path.exists(src):
+ self.source_paths.add(files.canonical_filename(src))
self.packages = {}
self.xml_out = None
self.has_arcs = coverage.data.has_arcs()
@@ -141,9 +146,10 @@ class XmlReporter(Reporter):
parts = dirname.split("/")
dirname = "/".join(parts[:self.config.xml_package_depth])
package_name = dirname.replace("/", ".")
- className = fr.relative_filename()
+ rel_name = fr.relative_filename()
- self.source_paths.add(files.relative_directory().rstrip('/'))
+ if rel_name != fr.filename:
+ self.source_paths.add(fr.filename[:-len(rel_name)].rstrip('/'))
package = self.packages.setdefault(package_name, [{}, 0, 0, 0, 0])
xclass = self.xml_out.createElement("class")
@@ -201,7 +207,7 @@ class XmlReporter(Reporter):
branch_rate = "0"
xclass.setAttribute("branch-rate", branch_rate)
- package[0][className] = xclass
+ package[0][rel_name] = xclass
package[1] += class_hits
package[2] += class_lines
package[3] += class_br_hits