summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-10-25 18:13:39 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-10-25 18:13:39 -0400
commit15635fdad644978f07c91183d4b37bad55f32494 (patch)
tree7284e651ec83a0507705599e66daf109c4ee2684
parent3bd028bcb0852a29f2833b2a3ebafec1526408a0 (diff)
downloadpython-coveragepy-git-15635fdad644978f07c91183d4b37bad55f32494.tar.gz
Use unicode_filename more, and account for missing filesystemencoding
-rw-r--r--coverage/files.py5
-rw-r--r--coverage/python.py6
2 files changed, 4 insertions, 7 deletions
diff --git a/coverage/files.py b/coverage/files.py
index 855d8157..44997d12 100644
--- a/coverage/files.py
+++ b/coverage/files.py
@@ -67,8 +67,6 @@ def canonical_filename(filename):
filename = f
break
cf = abs_file(filename)
- if env.PY2 and isinstance(cf, str):
- cf = cf.decode(sys.getfilesystemencoding())
CANONICAL_FILENAME_CACHE[filename] = cf
return CANONICAL_FILENAME_CACHE[filename]
@@ -135,7 +133,8 @@ if env.PY2:
def unicode_filename(filename):
"""Return a Unicode version of `filename`."""
if isinstance(filename, str):
- filename = filename.decode(sys.getfilesystemencoding())
+ encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
+ filename = filename.decode(encoding, "replace")
return filename
else:
@contract(filename='unicode', returns='unicode')
diff --git a/coverage/python.py b/coverage/python.py
index fe32150a..a4247ce6 100644
--- a/coverage/python.py
+++ b/coverage/python.py
@@ -96,8 +96,7 @@ class PythonFileReporter(FileReporter):
else:
filename = morf
- if env.PY2 and isinstance(filename, str):
- filename = filename.decode(sys.getfilesystemencoding())
+ filename = files.unicode_filename(filename)
# .pyc files should always refer to a .py instead.
if filename.endswith(('.pyc', '.pyo')):
@@ -110,8 +109,7 @@ class PythonFileReporter(FileReporter):
if hasattr(morf, '__name__'):
name = morf.__name__
name = name.replace(".", os.sep) + ".py"
- if isinstance(name, bytes):
- name = name.decode(sys.getfilesystemencoding())
+ name = files.unicode_filename(name)
else:
name = files.relative_filename(filename)
self.relname = name