From e7bb78139606d85bcf139dd108355de2d19d8756 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 3 May 2010 08:35:56 +0000 Subject: [PATCH] Merged revisions 80694,80703 via svnmerge from 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 | 9 +++++++++ Misc/NEWS | 3 +++ 2 files changed, 12 insertions(+) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 8d81bc91571..5eea1d996c0 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -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. diff --git a/Misc/NEWS b/Misc/NEWS index b15d03c90ef..3e4f33c2423 100644 --- 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.