]> granicus.if.org Git - python/commitdiff
Issue #10329: The trace module writes reports using the input Python script
authorVictor Stinner <victor.stinner@haypocalc.com>
Sun, 7 Nov 2010 15:47:36 +0000 (15:47 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Sun, 7 Nov 2010 15:47:36 +0000 (15:47 +0000)
encoding, instead of the locale encoding. Patch written by Alexander
Belopolsky.

Lib/trace.py
Misc/NEWS

index b24d193d358208072e3a4507a66d10e24e570b51..d460cf29fb679bdafddb2d228a901df980da05c2 100644 (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)
index 5569bcd4dd33e365dfe590cfbb721c54a491d947..bb0261f9f2b0763b63646815e671cd39b0fbbb7a 100644 (file)
--- 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.