mirror of
https://github.com/python/cpython
synced 2024-09-20 02:50:33 +00:00
Added test for this fix to classobject.c:
Since properties are supported here, is possible that instance_getattr2() raises an exception. Fix all code that made this assumption. Backport candidate.
This commit is contained in:
parent
f740bdf337
commit
2c9590f625
|
@ -288,3 +288,30 @@ class A:
|
|||
pass
|
||||
else:
|
||||
raise TestFailed, "how could this not have overflowed the stack?"
|
||||
|
||||
|
||||
# Tests for exceptions raised in instance_getattr2().
|
||||
|
||||
def booh(self):
|
||||
raise AttributeError, "booh"
|
||||
|
||||
class A:
|
||||
a = property(booh)
|
||||
try:
|
||||
A().a # Raised AttributeError: A instance has no attribute 'a'
|
||||
except AttributeError, x:
|
||||
if str(x) is not "booh":
|
||||
print "attribute error for A().a got masked:", str(x)
|
||||
|
||||
class E:
|
||||
__eq__ = property(booh)
|
||||
E() == E() # In debug mode, caused a C-level assert() to fail
|
||||
|
||||
class I:
|
||||
__init__ = property(booh)
|
||||
try:
|
||||
I() # In debug mode, printed XXX undetected error and raises AttributeError
|
||||
except AttributeError, x:
|
||||
pass
|
||||
else:
|
||||
print "attribute error for I.__init__ got masked"
|
||||
|
|
Loading…
Reference in a new issue