]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Patch #860326: traceback.format_exception_only() now prepends the
authorGeorg Brandl <georg@python.org>
Wed, 12 Apr 2006 21:14:12 +0000 (21:14 +0000)
committerGeorg Brandl <georg@python.org>
Wed, 12 Apr 2006 21:14:12 +0000 (21:14 +0000)
exception's module name to non-builtin exceptions, like the interpreter
itself does.
 (backport from rev. 45321)

Lib/test/test_traceback.py
Lib/traceback.py
Misc/NEWS

index 17ed022617b25b4fb3a8fe5c0345baaf32231310..f3efc3c82c8e51ae6a565032590ecc7e4a7c16f6 100644 (file)
@@ -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.
@@ -85,6 +88,24 @@ def test():
                 os.unlink(os.path.join(testdir, f))
             os.rmdir(testdir)
 
+    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)
 
index 95cde2bd75ca792c6a54bda38c64cfcfe0dd1262..fbdfb6a4928598dcca7314e35cf9509a530b0180 100644 (file)
@@ -159,6 +159,10 @@ def format_exception_only(etype, value):
     list = []
     if type(etype) == types.ClassType:
         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:
index e1cf2ef52cea78bc7a270f3fad666963c10a0af4..9d705ffb505139f17f3a305f4e9e01bcb1314737 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -23,6 +23,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.
+
 - The email module's parsedate_tz function now sets the daylight savings
   flag to -1 (unknown) since it can't tell from the date whether it should
   be set.