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)
........
This commit is contained in:
Victor Stinner 2010-05-03 08:35:56 +00:00
parent 336e54f4c7
commit e7bb781396
2 changed files with 12 additions and 0 deletions

View File

@ -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.

View File

@ -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.