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)