diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2021-11-20 18:46:18 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-11-20 19:36:58 -0500 |
commit | 7345085c3983f5f7d05f64da1af8e43da3dc5639 (patch) | |
tree | 1bd9d3338bf0a3df09da86b5b874c1d9c5997f2d /tests/test_xml.py | |
parent | e2c8f9c7bcf42b9210adbdb28b073fdda14be0d3 (diff) | |
download | python-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.py | 43 |
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.""" |