diff options
author | Florent Xicluna <florent.xicluna@gmail.com> | 2010-02-27 14:21:57 (GMT) |
---|---|---|
committer | Florent Xicluna <florent.xicluna@gmail.com> | 2010-02-27 14:21:57 (GMT) |
commit | 5925085653cc9ef28dbf36859b9f208ef80b57b4 (patch) | |
tree | ad6c11492804ff3b4090122c4feb6cce3159c4ac /Lib/doctest.py | |
parent | e33721e1b54a2af5b4547e56d9349930260b7235 (diff) | |
download | cpython-5925085653cc9ef28dbf36859b9f208ef80b57b4.zip cpython-5925085653cc9ef28dbf36859b9f208ef80b57b4.tar.gz cpython-5925085653cc9ef28dbf36859b9f208ef80b57b4.tar.bz2 |
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.
........
Diffstat (limited to 'Lib/doctest.py')
-rw-r--r-- | Lib/doctest.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py index eac4378..3b32004 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -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 |