]> granicus.if.org Git - python/commitdiff
Merged revisions 80694,80703 via svnmerge from
authorVictor Stinner <victor.stinner@haypocalc.com>
Mon, 3 May 2010 08:35:56 +0000 (08:35 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Mon, 3 May 2010 08:35:56 +0000 (08:35 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r80694 | victor.stinner | 2010-05-02 11:37:08 +0200 (dim., 02 mai 2010) | 3 lines

  Issue #8533: Write tracebacks and failed tests to sys.stderr instead of
  sys.stdout to avoid UnicodeEncodeError (use backslashreplace error handler)
........
  r80703 | victor.stinner | 2010-05-02 19:24:51 +0200 (dim., 02 mai 2010) | 4 lines

  Issue #8533: revert r80694; try a different fix: regrtest uses backslashreplace
  error handler for stdout to avoid UnicodeEncodeError (write non-ASCII character
  to stdout using ASCII encoding)
........

Lib/test/regrtest.py
Misc/NEWS

index 8d81bc91571506e35a330aceeb7bc4dcb712006e..5eea1d996c067c279c4ff4809b83e8e83aef97e2 100755 (executable)
@@ -411,6 +411,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
     support.verbose = verbose      # Tell tests to be moderately quiet
     support.use_resources = use_resources
     save_modules = sys.modules.keys()
+    replace_stdout()
     for test in tests:
         if not quiet:
             print(test)
@@ -556,6 +557,14 @@ def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
     tests.sort()
     return stdtests + tests
 
+def replace_stdout():
+    """Set stdout encoder error handler to backslashreplace (as stderr error
+    handler) to avoid UnicodeEncodeError when printing a traceback"""
+    stdout = sys.stdout
+    sys.stdout = open(stdout.fileno(), 'w',
+        encoding=stdout.encoding,
+        errors="backslashreplace")
+
 def runtest(test, generate, verbose, quiet, test_times,
             testdir=None, huntrleaks=False, debug=False):
     """Run a single test.
index b15d03c90ef21f1f9c54cfd304e1d734ae38fc58..3e4f33c24238999c655810f3d0b835a4bcc0d466 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -140,6 +140,9 @@ Build
 Tests
 -----
 
+- Issue #8533: regrtest uses backslashreplace error handler for stdout to avoid
+  UnicodeEncodeError (write non-ASCII character to stdout using ASCII encoding)
+
 - Issue #8576: Remove use of find_unused_port() in test_smtplib and
   test_multiprocessing.  Patch by Paul Moore.