mirror of
https://github.com/python/cpython.git
synced 2025-11-02 14:41:33 +00:00
Bug #1531405, format_exception no longer raises an exception if
str(exception) raised an exception.
This commit is contained in:
parent
4b8bd31ef0
commit
ff4b63b80f
3 changed files with 51 additions and 5 deletions
|
|
@ -130,15 +130,24 @@ def test_base_exception(self):
|
||||||
def test_string_exception1(self):
|
def test_string_exception1(self):
|
||||||
str_type = "String Exception"
|
str_type = "String Exception"
|
||||||
err = traceback.format_exception_only(str_type, None)
|
err = traceback.format_exception_only(str_type, None)
|
||||||
self.assert_(len(err) == 1)
|
self.assertEqual(len(err), 1)
|
||||||
self.assert_(err[0] == str_type + '\n')
|
self.assertEqual(err[0], str_type + '\n')
|
||||||
|
|
||||||
def test_string_exception2(self):
|
def test_string_exception2(self):
|
||||||
str_type = "String Exception"
|
str_type = "String Exception"
|
||||||
str_value = "String Value"
|
str_value = "String Value"
|
||||||
err = traceback.format_exception_only(str_type, str_value)
|
err = traceback.format_exception_only(str_type, str_value)
|
||||||
self.assert_(len(err) == 1)
|
self.assertEqual(len(err), 1)
|
||||||
self.assert_(err[0] == str_type + ': ' + str_value + '\n')
|
self.assertEqual(err[0], str_type + ': ' + str_value + '\n')
|
||||||
|
|
||||||
|
def test_format_exception_only_bad__str__(self):
|
||||||
|
class X(Exception):
|
||||||
|
def __str__(self):
|
||||||
|
1/0
|
||||||
|
err = traceback.format_exception_only(X, X())
|
||||||
|
self.assertEqual(len(err), 1)
|
||||||
|
str_value = '<unprintable %s object>' % X.__name__
|
||||||
|
self.assertEqual(err[0], X.__name__ + ': ' + str_value + '\n')
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,12 @@ def format_exception_only(etype, value):
|
||||||
|
|
||||||
def _format_final_exc_line(etype, value):
|
def _format_final_exc_line(etype, value):
|
||||||
"""Return a list of a single line -- normal case for format_exception_only"""
|
"""Return a list of a single line -- normal case for format_exception_only"""
|
||||||
if value is None or not str(value):
|
try:
|
||||||
|
printable = value is None or not str(value)
|
||||||
|
except:
|
||||||
|
printable = False
|
||||||
|
|
||||||
|
if printable:
|
||||||
line = "%s\n" % etype
|
line = "%s\n" % etype
|
||||||
else:
|
else:
|
||||||
line = "%s: %s\n" % (etype, _some_str(value))
|
line = "%s: %s\n" % (etype, _some_str(value))
|
||||||
|
|
|
||||||
32
Misc/NEWS
32
Misc/NEWS
|
|
@ -4,6 +4,38 @@ Python News
|
||||||
|
|
||||||
(editors: check NEWS.help for information about editing NEWS using ReST.)
|
(editors: check NEWS.help for information about editing NEWS using ReST.)
|
||||||
|
|
||||||
|
What's New in Python 2.5 release candidate 1?
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
*Release date: XX-AUG-2006*
|
||||||
|
|
||||||
|
Core and builtins
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
|
||||||
|
Library
|
||||||
|
-------
|
||||||
|
|
||||||
|
- Bug #1531405, format_exception no longer raises an exception if
|
||||||
|
str(exception) raised an exception.
|
||||||
|
|
||||||
|
|
||||||
|
Extension Modules
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
Build
|
||||||
|
-----
|
||||||
|
|
||||||
|
|
||||||
|
Mac
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 2.5 beta 3?
|
What's New in Python 2.5 beta 3?
|
||||||
================================
|
================================
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue