From: Kristján Valur Jónsson Date: Fri, 26 Aug 2022 14:07:31 +0000 (+0000) Subject: Port regression test for issue GH-93592 (GH-96208) X-Git-Tag: v3.12.0a1~557 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=771eff21a0984327a95013e2bd1d57b1f1a0e89d;p=thirdparty%2FPython%2Fcpython.git Port regression test for issue GH-93592 (GH-96208) --- diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index dba5ceffaf1c..8fff2d47c10f 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -4,6 +4,7 @@ import inspect import pickle import sys import types +import traceback import unittest import warnings from test import support @@ -2207,6 +2208,29 @@ class CoroutineTest(unittest.TestCase): with self.assertWarns(RuntimeWarning): gen.cr_frame.clear() + def test_stack_in_coroutine_throw(self): + # Regression test for https://github.com/python/cpython/issues/93592 + async def a(): + return await b() + + async def b(): + return await c() + + @types.coroutine + def c(): + try: + # traceback.print_stack() + yield len(traceback.extract_stack()) + except ZeroDivisionError: + # traceback.print_stack() + yield len(traceback.extract_stack()) + + coro = a() + len_send = coro.send(None) + len_throw = coro.throw(ZeroDivisionError) + # before fixing, visible stack from throw would be shorter than from send. + self.assertEqual(len_send, len_throw) + @unittest.skipIf( support.is_emscripten or support.is_wasi,