From d7184d3dbd249444ec3961641dc08a9ad3c1ac34 Mon Sep 17 00:00:00 2001 From: Chris Jerdonek Date: Sat, 16 May 2020 21:14:48 -0700 Subject: bpo-29587: Add another test for the gen.throw() fix. (GH-19859) --- Lib/test/test_generators.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py index 348ae15..87cc2df 100644 --- a/Lib/test/test_generators.py +++ b/Lib/test/test_generators.py @@ -332,6 +332,28 @@ class GeneratorThrowTest(unittest.TestCase): context = cm.exception.__context__ self.assertEqual((type(context), context.args), (KeyError, ('a',))) + 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 -- cgit v0.12