[svn r57554] fix case where argument to AssertionError has broken __repr__

--HG--
branch : trunk
This commit is contained in:
hpk 2008-08-21 15:43:45 +02:00
parent 162160acaf
commit a0cbc060b6
2 changed files with 16 additions and 1 deletions

View File

@ -8,7 +8,14 @@ class AssertionError(BuiltinAssertionError):
def __init__(self, *args):
BuiltinAssertionError.__init__(self, *args)
if args:
self.msg = str(args[0])
try:
self.msg = str(args[0])
except (KeyboardInterrupt, SystemExit):
raise
except:
self.msg = "<[broken __repr__] %s at %0xd>" %(
args[0].__class__, id(args[0]))
else:
f = sys._getframe(1)
try:

View File

@ -96,3 +96,11 @@ def test_assert_implicit_multiline():
except AssertionError, e:
assert e.msg.find('assert [1, 2, 3] !=') != -1
def test_assert_with_brokenrepr_arg():
class BrokenRepr:
def __repr__(self): 0 / 0
e = AssertionError(BrokenRepr())
if e.msg.find("broken __repr__") == -1:
py.test.fail("broken __repr__ not handle correctly")