summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-07-30 09:18:49 +0000
committerGeorg Brandl <georg@python.org>2010-07-30 09:18:49 +0000
commit9367f751dfeb0f3199b0f516c85d0da1610e8465 (patch)
treec7cd79410b3a017a35e54706afde806ed3852607
parent773b8d4c4862a29a62393aa4ab3138c07541034d (diff)
downloadcpython-9367f751dfeb0f3199b0f516c85d0da1610e8465.tar.gz
#7539: use _saferepr() for printing exceptions from pdb.
-rwxr-xr-xLib/pdb.py4
-rw-r--r--Lib/test/test_pdb.py27
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)