Port regression test for issue GH-93592 (GH-96208)

This commit is contained in:
Kristján Valur Jónsson 2022-08-26 14:07:31 +00:00 committed by GitHub
parent 8c1dbad36f
commit 771eff21a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,6 +4,7 @@ import inspect
import pickle import pickle
import sys import sys
import types import types
import traceback
import unittest import unittest
import warnings import warnings
from test import support from test import support
@ -2207,6 +2208,29 @@ class CoroutineTest(unittest.TestCase):
with self.assertWarns(RuntimeWarning): with self.assertWarns(RuntimeWarning):
gen.cr_frame.clear() 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( @unittest.skipIf(
support.is_emscripten or support.is_wasi, support.is_emscripten or support.is_wasi,