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."""
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):
"""
+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)