From 64bc3b28a321b6026488f689fb125f31766d9730 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 7 Nov 2010 15:47:36 +0000 Subject: [PATCH] Issue #10329: The trace module writes reports using the input Python script encoding, instead of the locale encoding. Patch written by Alexander Belopolsky. --- Lib/trace.py | 9 +++++---- Misc/NEWS | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Lib/trace.py b/Lib/trace.py index b24d193d358..d460cf29fb6 100644 --- a/Lib/trace.py +++ b/Lib/trace.py @@ -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) diff --git a/Misc/NEWS b/Misc/NEWS index 5569bcd4dd3..bb0261f9f2b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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.