bpo-29587: Add another test for the gen.throw() exception chain fix by cjerdonek · Pull Request #19859 · python/cpython
def test_exception_context_with_yield_inside_generator(self): # Check that the context is also available from inside the generator # with yield, as opposed to outside. def f(): try: raise KeyError('a') except Exception: try: yield except Exception as exc: self.assertEqual(type(exc), ValueError) context = exc.__context__ self.assertEqual((type(context), context.args), (KeyError, ('a',))) yield 'b'
gen = f() gen.send(None) actual = gen.throw(ValueError) # This ensures that the assertions inside were executed. self.assertEqual(actual, 'b')
def test_exception_context_with_yield_from(self): def f(): yield