From: Florent Xicluna Date: Thu, 14 Oct 2010 21:46:04 +0000 (+0000) Subject: Fix the issue with non-ascii char in doctest. Issue #9409 X-Git-Tag: v2.7.1rc1~156 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=80800d35713912eb4b9486033c1ce86bce263728;p=python Fix the issue with non-ascii char in doctest. Issue #9409 Recorded merge of revisions 85495,85500 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85495 | florent.xicluna | 2010-10-14 22:56:20 +0200 (jeu., 14 oct. 2010) | 3 lines Fix the regex to match all kind of filenames, for interactive debugging in doctests. (issue #9409) ........ r85500 | florent.xicluna | 2010-10-14 23:35:58 +0200 (jeu., 14 oct. 2010) | 2 lines Add test case for issue #9409, non-ascii char in doctest. It passes in 3.2 but needs fixing in 2.7. ........ --- diff --git a/Lib/doctest.py b/Lib/doctest.py index dd579fd69c..c37ff9e651 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -1333,7 +1333,9 @@ class DocTestRunner: m = self.__LINECACHE_FILENAME_RE.match(filename) if m and m.group('name') == self.test.name: example = self.test.examples[int(m.group('examplenum'))] - source = example.source.encode('ascii', 'backslashreplace') + source = example.source + if isinstance(source, unicode): + source = source.encode('ascii', 'backslashreplace') return source.splitlines(True) else: return self.save_linecache_getlines(filename, module_globals) diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 84c0798719..c027acdcd6 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -1721,6 +1721,9 @@ def test_pdb_set_trace(): >>> doc = ''' ... >>> x = 42 + ... >>> raise Exception('clé') + ... Traceback (most recent call last): + ... Exception: clé ... >>> import pdb; pdb.set_trace() ... ''' >>> parser = doctest.DocTestParser() @@ -1740,12 +1743,12 @@ def test_pdb_set_trace(): >>> try: runner.run(test) ... finally: sys.stdin = real_stdin --Return-- - > (1)()->None + > (1)()->None -> import pdb; pdb.set_trace() (Pdb) print x 42 (Pdb) continue - TestResults(failed=0, attempted=2) + TestResults(failed=0, attempted=3) You can also put pdb.set_trace in a function called from a test: