Issue #10329: The trace module writes reports using the input Python script

encoding, instead of the locale encoding. Patch written by Alexander
Belopolsky.
This commit is contained in:
Victor Stinner 2010-11-07 15:47:36 +00:00
parent bb4f218050
commit 64bc3b28a3
2 changed files with 9 additions and 4 deletions

View File

@ -330,9 +330,10 @@ class CoverageResults:
source = linecache.getlines(filename)
coverpath = os.path.join(dir, modulename + ".cover")
with open(filename, 'rb') as fp:
encoding, _ = tokenize.detect_encoding(fp.readline)
n_hits, n_lines = self.write_results_file(coverpath, source,
lnotab, count)
lnotab, count, encoding)
if summary and n_lines:
percent = int(100 * n_hits / n_lines)
sums[modulename] = n_lines, percent, modulename, filename
@ -351,11 +352,11 @@ class CoverageResults:
except IOError as err:
print("Can't save counts files because %s" % err, file=sys.stderr)
def write_results_file(self, path, lines, lnotab, lines_hit):
def write_results_file(self, path, lines, lnotab, lines_hit, encoding=None):
"""Return a coverage results file in path."""
try:
outfile = open(path, "w")
outfile = open(path, "w", encoding=encoding)
except IOError as err:
print(("trace: Could not open %r for writing: %s"
"- skipping" % (path, err)), file=sys.stderr)

View File

@ -65,6 +65,10 @@ Core and Builtins
Library
-------
- Issue #10329: The trace module writes reports using the input Python script
encoding, instead of the locale encoding. Patch written by Alexander
Belopolsky.
- Issue #10126: Fix distutils' test_build when Python was built with
--enable-shared.