summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2017-04-30 08:20:19 -0400
committerNed Batchelder <ned@nedbatchelder.com>2017-04-30 08:20:19 -0400
commit1ad37dcc0e3927175f3988b5116654c32450aefc (patch)
tree84b128b2eb468b068beedb392fb7b6569890ca9a
parenta1f99a47253220988587897f35e518bcf6372df9 (diff)
downloadpython-coveragepy-1ad37dcc0e3927175f3988b5116654c32450aefc.tar.gz
Fix: xml report fails in non-ascii directory. #573
-rw-r--r--CHANGES.rst5
-rw-r--r--coverage/xmlreport.py2
-rw-r--r--tests/test_xml.py9
3 files changed, 15 insertions, 1 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index d3495ec..76a1172 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -13,6 +13,11 @@ Unreleased
- Errors printed by the ``coverage`` command now go to stderr instead of
stdout.
+- Running ``coverage xml`` in a directory named with non-ASCII characters would
+ fail under Python 2, as reported in `issue 573`_. This is now fixed.
+
+.. _issue 573: https://bitbucket.org/ned/coveragepy/issues/573/cant-generate-xml-report-if-some-source
+
Version 4.4b1 --- 2017-04-04
----------------------------
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index 8af0d78..b5a33dd 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -150,7 +150,7 @@ class XmlReporter(Reporter):
else:
rel_name = fr.relative_filename()
- dirname = os.path.dirname(rel_name) or "."
+ dirname = os.path.dirname(rel_name) or u"."
dirname = "/".join(dirname.split("/")[:self.config.xml_package_depth])
package_name = dirname.replace("/", ".")
diff --git a/tests/test_xml.py b/tests/test_xml.py
index b59f873..c3493e7 100644
--- a/tests/test_xml.py
+++ b/tests/test_xml.py
@@ -1,3 +1,4 @@
+# coding: utf-8
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
@@ -186,6 +187,14 @@ class XmlReportTest(XmlTestHelpers, CoverageTest):
xml
)
+ def test_nonascii_directory(self):
+ # https://bitbucket.org/ned/coveragepy/issues/573/cant-generate-xml-report-if-some-source
+ self.make_file("테스트/program.py", "a = 1")
+ with change_dir("테스트"):
+ cov = coverage.Coverage()
+ self.start_import_stop(cov, "program")
+ cov.xml_report()
+
class XmlPackageStructureTest(XmlTestHelpers, CoverageTest):
"""Tests about the package structure reported in the coverage.xml file."""