Merged revisions 78493 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r78493 | florent.xicluna | 2010-02-27 15:21:57 +0100 (sam, 27 fév 2010) | 11 lines

  For 3.x, the "backslashreplace" error handling is plugged on the "write" method.

  Recorded merge of revisions 78488 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r78488 | florent.xicluna | 2010-02-27 14:31:23 +0100 (sam, 27 fév 2010) | 2 lines

    Issue #1729305: Fix doctest to handle encode error with "backslashreplace".  It fixes #7667 too.
  ........
................
This commit is contained in:
Florent Xicluna 2010-02-27 14:37:21 +00:00
parent 8f1c275daa
commit e94b221d5e
3 changed files with 42 additions and 4 deletions

View file

@ -218,8 +218,8 @@ def _load_testfile(filename, package, module_relative, encoding):
def _indent(s, indent=4):
"""
Add the given number of space characters to the beginning every
non-blank line in `s`, and return the result.
Add the given number of space characters to the beginning of
every non-blank line in `s`, and return the result.
"""
# This regexp matches the start of non-blank lines:
return re.sub('(?m)^(?!$)', indent*' ', s)
@ -1354,7 +1354,14 @@ class DocTestRunner:
save_stdout = sys.stdout
if out is None:
out = save_stdout.write
encoding = save_stdout.encoding
if encoding is None or encoding.lower() == 'utf-8':
out = save_stdout.write
else:
# Use backslashreplace error handling on write
def out(s):
s = str(s.encode(encoding, 'backslashreplace'), encoding)
save_stdout.write(s)
sys.stdout = self._fakeout
# Patch pdb.set_trace to restore sys.stdout during interactive