diff options
author | Georg Brandl <georg@python.org> | 2010-07-30 09:18:49 +0000 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2010-07-30 09:18:49 +0000 |
commit | 9367f751dfeb0f3199b0f516c85d0da1610e8465 (patch) | |
tree | c7cd79410b3a017a35e54706afde806ed3852607 | |
parent | 773b8d4c4862a29a62393aa4ab3138c07541034d (diff) | |
download | cpython-9367f751dfeb0f3199b0f516c85d0da1610e8465.tar.gz |
#7539: use _saferepr() for printing exceptions from pdb.
-rwxr-xr-x | Lib/pdb.py | 4 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 27 |
2 files changed, 29 insertions, 2 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py index 0751c17667..79a36a631d 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -237,7 +237,7 @@ class Pdb(bdb.Bdb, cmd.Cmd): 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 @@ class Pdb(bdb.Bdb, cmd.Cmd): 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): diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index ce64d171a4..0ef525ee1c 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -126,6 +126,33 @@ def test_pdb_skip_modules_with_callback(): """ +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) |