summaryrefslogtreecommitdiff
path: root/tests/test_xml.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2021-11-20 18:46:18 -0500
committerNed Batchelder <ned@nedbatchelder.com>2021-11-20 19:36:58 -0500
commit7345085c3983f5f7d05f64da1af8e43da3dc5639 (patch)
tree1bd9d3338bf0a3df09da86b5b874c1d9c5997f2d /tests/test_xml.py
parente2c8f9c7bcf42b9210adbdb28b073fdda14be0d3 (diff)
downloadpython-coveragepy-git-7345085c3983f5f7d05f64da1af8e43da3dc5639.tar.gz
refactor(test): move unicode handling tests to individual test files
Eight fewer sub-processes
Diffstat (limited to 'tests/test_xml.py')
-rw-r--r--tests/test_xml.py43
1 files changed, 42 insertions, 1 deletions
diff --git a/tests/test_xml.py b/tests/test_xml.py
index a2c1138d..2f332bd3 100644
--- a/tests/test_xml.py
+++ b/tests/test_xml.py
@@ -109,10 +109,14 @@ class XmlReportTest(XmlTestHelpers, CoverageTest):
self.make_mycode_data()
self.run_xml_report()
self.assert_exists("coverage.xml")
+ assert self.stdout() == ""
def test_argument_affects_xml_placement(self):
self.make_mycode_data()
- self.run_xml_report(outfile="put_it_there.xml")
+ cov = coverage.Coverage(messages=True)
+ cov.load()
+ cov.xml_report(outfile="put_it_there.xml")
+ assert self.stdout() == "Wrote XML report to put_it_there.xml\n"
self.assert_doesnt_exist("coverage.xml")
self.assert_exists("put_it_there.xml")
@@ -267,6 +271,43 @@ class XmlReportTest(XmlTestHelpers, CoverageTest):
self.start_import_stop(cov, "program")
cov.xml_report()
+ def test_accented_dot_py(self):
+ # Make a file with a non-ascii character in the filename.
+ self.make_file("h\xe2t.py", "print('accented')")
+ self.make_data_file(lines={abs_file("h\xe2t.py"): [1]})
+ cov = coverage.Coverage()
+ cov.load()
+ cov.xml_report()
+ # The XML report is always UTF8-encoded.
+ with open("coverage.xml", "rb") as xmlf:
+ xml = xmlf.read()
+ assert ' filename="h\xe2t.py"'.encode() in xml
+ assert ' name="h\xe2t.py"'.encode() in xml
+
+ def test_accented_directory(self):
+ # Make a file with a non-ascii character in the directory name.
+ self.make_file("\xe2/accented.py", "print('accented')")
+ self.make_data_file(lines={abs_file("\xe2/accented.py"): [1]})
+
+ # The XML report is always UTF8-encoded.
+ cov = coverage.Coverage()
+ cov.load()
+ cov.xml_report()
+ with open("coverage.xml", "rb") as xmlf:
+ xml = xmlf.read()
+ assert b' filename="\xc3\xa2/accented.py"' in xml
+ assert b' name="accented.py"' in xml
+
+ dom = ElementTree.parse("coverage.xml")
+ elts = dom.findall(".//package[@name='â']")
+ assert len(elts) == 1
+ assert elts[0].attrib == {
+ "branch-rate": "0",
+ "complexity": "0",
+ "line-rate": "1",
+ "name": "â",
+ }
+
def unbackslash(v):
"""Find strings in `v`, and replace backslashes with slashes throughout."""