From: Chris Jerdonek Date: Sun, 17 May 2020 04:14:48 +0000 (-0700) Subject: bpo-29587: Add another test for the gen.throw() fix. (GH-19859) X-Git-Tag: v3.9.0b1~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d7184d3dbd249444ec3961641dc08a9ad3c1ac34;p=thirdparty%2FPython%2Fcpython.git bpo-29587: Add another test for the gen.throw() fix. (GH-19859) --- diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py index 348ae15aa653..87cc2dfc8c67 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