diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-05-25 02:40:21 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-05-25 02:40:21 (GMT) |
commit | 87e5006d8c5974597df9e3074b95227187d32be3 (patch) | |
tree | 82f8ff2dae761cdf19eeec36806f3bbb35b439e1 /Lib/test | |
parent | 176a56c69b1563c4a8ac0d8f974b4271177c80ee (diff) | |
download | cpython-87e5006d8c5974597df9e3074b95227187d32be3.zip cpython-87e5006d8c5974597df9e3074b95227187d32be3.tar.gz cpython-87e5006d8c5974597df9e3074b95227187d32be3.tar.bz2 |
handle errors from _PyObject_LookupSpecial when __get__ fails
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_descr.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index f3c216a..c7989b1 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -1722,7 +1722,11 @@ order (MRO) for bases """ def __get__(self, obj, owner): record.append(1) return self.impl.__get__(obj, owner) - + class MyException(Exception): + pass + class ErrDescr(object): + def __get__(self, obj, owner): + raise MyException for name, runner, meth_impl, ok, env in specials: class X(Checker): @@ -1741,6 +1745,18 @@ order (MRO) for bases """ runner(X()) self.assertEqual(record, [1], name) + class X(Checker): + pass + for attr, obj in env.iteritems(): + setattr(X, attr, obj) + setattr(X, name, ErrDescr()) + try: + runner(X()) + except MyException: + pass + else: + self.fail("{0!r} didn't raise".format(name)) + def test_specials(self): # Testing special operators... # Test operators like __hash__ for which a built-in default exists |