mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
[3.13] gh-131670: Fix crash in anext()
when __anext__
is sync and raises (GH-131682) (#131686)
gh-131670: Fix crash in `anext()` when `__anext__` is sync and raises (GH-131682)
(cherry picked from commit 929afd1d6e
)
Co-authored-by: sobolevn <mail@sobolevn.me>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
9f36dff788
commit
3492098418
3 changed files with 24 additions and 0 deletions
|
@ -1169,6 +1169,26 @@ class AsyncGenAsyncioTest(unittest.TestCase):
|
|||
|
||||
self.loop.run_until_complete(run())
|
||||
|
||||
def test_sync_anext_raises_exception(self):
|
||||
# See: https://github.com/python/cpython/issues/131670
|
||||
msg = 'custom'
|
||||
for exc_type in [
|
||||
StopAsyncIteration,
|
||||
StopIteration,
|
||||
ValueError,
|
||||
Exception,
|
||||
]:
|
||||
exc = exc_type(msg)
|
||||
with self.subTest(exc=exc):
|
||||
class A:
|
||||
def __anext__(self):
|
||||
raise exc
|
||||
|
||||
with self.assertRaisesRegex(exc_type, msg):
|
||||
anext(A())
|
||||
with self.assertRaisesRegex(exc_type, msg):
|
||||
anext(A(), 1)
|
||||
|
||||
def test_async_gen_asyncio_anext_stopiteration(self):
|
||||
async def foo():
|
||||
try:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue