diff options
author | Georg Brandl <georg@python.org> | 2006-04-12 21:14:09 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2006-04-12 21:14:09 (GMT) |
commit | 24c274f5dc2f2f9ebe6d3c9ee087b80d40bd49b4 (patch) | |
tree | 6d2142f4321d52c38345cc5f32876fa91ac0ea97 | |
parent | 64029986bc8b7c7eac7bc6f6265d3d3163d8bb06 (diff) | |
download | cpython-24c274f5dc2f2f9ebe6d3c9ee087b80d40bd49b4.zip cpython-24c274f5dc2f2f9ebe6d3c9ee087b80d40bd49b4.tar.gz cpython-24c274f5dc2f2f9ebe6d3c9ee087b80d40bd49b4.tar.bz2 |
Patch #860326: traceback.format_exception_only() now prepends the
exception's module name to non-builtin exceptions, like the interpreter
itself does.
-rw-r--r-- | Lib/test/test_traceback.py | 21 | ||||
-rw-r--r-- | Lib/traceback.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 30 insertions, 1 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 22c0456..26ab7dc 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -5,6 +5,9 @@ from test.test_support import run_unittest, is_jython import traceback +class TbError(Exception): + pass + class TracebackCases(unittest.TestCase): # For now, a very minimal set of tests. I want to be sure that # formatting of SyntaxErrors works based on changes for 2.1. @@ -103,6 +106,24 @@ def test(): import sys sys.exc_traceback.__members__ + def raise_tberror(self): + raise TbError + + def raise_typeerror(self): + raise TypeError + + def test_modulename(self): + # Bug 860326: format_exception_only should prepend module name + # to exceptions not in "exceptions", like PyErr_Print does. + err = self.get_exception_format(self.raise_tberror, TbError) + self.assertEquals(len(err), 1) + self.assert_(err[0] == '__main__.TbError\n' or + err[0] == 'test.test_traceback.TbError\n') + + err = self.get_exception_format(self.raise_typeerror, TypeError) + self.assertEquals(err[0], 'TypeError\n') + + def test_main(): run_unittest(TracebackCases) diff --git a/Lib/traceback.py b/Lib/traceback.py index 454eb1b..56a87dc 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -158,8 +158,12 @@ def format_exception_only(etype, value): """ list = [] if (type(etype) == types.ClassType - or (isinstance(etype, type) and issubclass(etype, Exception))): + or (isinstance(etype, type) and issubclass(etype, BaseException))): stype = etype.__name__ + if not hasattr(etype, '__module__'): + stype = '<unknown>.' + stype + elif etype.__module__ != 'exceptions': + stype = etype.__module__ + '.' + stype else: stype = etype if value is None: @@ -49,6 +49,10 @@ Extension Modules Library ------- +- Patch #860326: traceback.format_exception_only() now prepends the + exception's module name to non-builtin exceptions, like the interpreter + itself does. + - SimpleXMLRPCServer relied on the fcntl module, which is unavailable on Windows. Bug #1469163. |