diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/codeunit.py | 5 | ||||
-rw-r--r-- | coverage/files.py | 11 |
2 files changed, 9 insertions, 7 deletions
diff --git a/coverage/codeunit.py b/coverage/codeunit.py index f34967e5..09b86fe6 100644 --- a/coverage/codeunit.py +++ b/coverage/codeunit.py @@ -4,7 +4,7 @@ import os import sys from coverage.backward import string_class, unicode_class -from coverage.files import get_python_source, get_zip_data +from coverage.files import get_python_source, get_zip_bytes from coverage.misc import CoverageException, NoSource from coverage.parser import PythonParser from coverage.phystokens import source_token_lines, source_encoding @@ -165,6 +165,7 @@ class PythonCodeUnit(CodeUnit): if sys.version_info < (3, 0): encoding = source_encoding(self._source) self._source = self._source.decode(encoding, "replace") + assert isinstance(self._source, unicode_class) return self._source def get_parser(self, exclude=None): @@ -206,7 +207,7 @@ class PythonCodeUnit(CodeUnit): try_filename = base + try_ext if os.path.exists(try_filename): return try_filename, None - source = get_zip_data(try_filename) + source = get_zip_bytes(try_filename) if source: return try_filename, source raise NoSource("No source for code: '%s'" % filename) diff --git a/coverage/files.py b/coverage/files.py index 1400b6eb..c2d7153d 100644 --- a/coverage/files.py +++ b/coverage/files.py @@ -3,7 +3,7 @@ import fnmatch, os, os.path, re, sys import ntpath, posixpath -from coverage.backward import to_string, open_python_source +from coverage.backward import open_python_source from coverage.misc import CoverageException, join_regex @@ -58,7 +58,7 @@ def get_python_source(filename): return f.read() # Maybe it's in a zip file? - source = get_zip_data(filename) + source = get_zip_bytes(filename) if source is not None: return source @@ -68,10 +68,10 @@ def get_python_source(filename): ) -def get_zip_data(filename): +def get_zip_bytes(filename): """Get data from `filename` if it is a zip file path. - Returns the string data read from the zip file, or None if no zip file + Returns the bytestring data read from the zip file, or None if no zip file could be found or `filename` isn't in it. The data returned will be an empty string if the file is empty. @@ -89,7 +89,8 @@ def get_zip_data(filename): data = zi.get_data(parts[1]) except IOError: continue - return to_string(data) + assert isinstance(data, bytes) + return data return None |