[Python-checkins] r85501 - in python/branches/release27-maint: Lib/doctest.py Lib/test/test_doctest.py

florent.xicluna python-checkins at python.org
Thu Oct 14 23:46:04 CEST 2010


Author: florent.xicluna
Date: Thu Oct 14 23:46:04 2010
New Revision: 85501

Log:
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.
........


Modified:
   python/branches/release27-maint/   (props changed)
   python/branches/release27-maint/Lib/doctest.py
   python/branches/release27-maint/Lib/test/test_doctest.py

Modified: python/branches/release27-maint/Lib/doctest.py
==============================================================================
--- python/branches/release27-maint/Lib/doctest.py	(original)
+++ python/branches/release27-maint/Lib/doctest.py	Thu Oct 14 23:46:04 2010
@@ -1333,7 +1333,9 @@
         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)

Modified: python/branches/release27-maint/Lib/test/test_doctest.py
==============================================================================
--- python/branches/release27-maint/Lib/test/test_doctest.py	(original)
+++ python/branches/release27-maint/Lib/test/test_doctest.py	Thu Oct 14 23:46:04 2010
@@ -1721,6 +1721,9 @@
 
       >>> 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 @@
       >>> try: runner.run(test)
       ... finally: sys.stdin = real_stdin
       --Return--
-      > <doctest foo-bär at baz[1]>(1)<module>()->None
+      > <doctest foo-bär at baz[2]>(1)<module>()->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:
 


More information about the Python-checkins mailing list