[Python-checkins] r83267 - in python/branches/release27-maint/Lib: pdb.py test/test_pdb.py

georg.brandl python-checkins at python.org
Fri Jul 30 11:18:49 CEST 2010


Author: georg.brandl
Date: Fri Jul 30 11:18:49 2010
New Revision: 83267

Log:
#7539: use _saferepr() for printing exceptions from pdb.

Modified:
   python/branches/release27-maint/Lib/pdb.py
   python/branches/release27-maint/Lib/test/test_pdb.py

Modified: python/branches/release27-maint/Lib/pdb.py
==============================================================================
--- python/branches/release27-maint/Lib/pdb.py	(original)
+++ python/branches/release27-maint/Lib/pdb.py	Fri Jul 30 11:18:49 2010
@@ -237,7 +237,7 @@
             if type(t) == type(''):
                 exc_type_name = t
             else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', v
+            print >>self.stdout, '***', exc_type_name + ':', _saferepr(v)
 
     def precmd(self, line):
         """Handle alias expansion and ';;' separator."""
@@ -753,7 +753,7 @@
             if isinstance(t, str):
                 exc_type_name = t
             else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', repr(v)
+            print >>self.stdout, '***', exc_type_name + ':', _saferepr(v)
             raise
 
     def do_p(self, arg):

Modified: python/branches/release27-maint/Lib/test/test_pdb.py
==============================================================================
--- python/branches/release27-maint/Lib/test/test_pdb.py	(original)
+++ python/branches/release27-maint/Lib/test/test_pdb.py	Fri Jul 30 11:18:49 2010
@@ -126,6 +126,33 @@
     """
 
 
+def test_pdb_unicode_exception():
+    r"""This tests exceptions that cannot be displayed due to Unicode issues.
+    http://bugs.python.org/issue7539
+
+    >>> def test_function():
+    ...     import pdb; pdb.Pdb().set_trace()
+    ...     pass
+
+    >>> def raising_function():
+    ...     raise ValueError(u"\xff")
+
+    >>> with PdbTestInput([
+    ...     'raising_function()',
+    ...     'p raising_function()',
+    ...     'continue',
+    ... ]):
+    ...     test_function()
+    > <doctest test.test_pdb.test_pdb_unicode_exception[0]>(3)test_function()
+    -> pass
+    (Pdb) raising_function()
+    *** ValueError: ValueError(u'\xff',)
+    (Pdb) p raising_function()
+    *** ValueError: ValueError(u'\xff',)
+    (Pdb) continue
+    """
+
+
 def test_main():
     from test import test_pdb
     test_support.run_doctest(test_pdb, verbosity=True)


More information about the Python-checkins mailing list