tests: Add tests for generator throw and yield-from with exc handlers.
This commit adds a generator test for throwing into a nested exception, and one when using yield-from with a pending exception cleanup. Both these tests currently fail on the native emitter, and are simplified versions of native test failures from uasyncio in #5332.
This commit is contained in:
parent
d89ed3e62b
commit
1f4b607116
23
tests/basics/gen_yield_from_pending.py
Normal file
23
tests/basics/gen_yield_from_pending.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Tests that the pending exception state is managed correctly
|
||||||
|
# (previously failed on native emitter).
|
||||||
|
|
||||||
|
def noop_task():
|
||||||
|
print('noop task')
|
||||||
|
yield 1
|
||||||
|
|
||||||
|
def raise_task():
|
||||||
|
print('raise task')
|
||||||
|
yield 2
|
||||||
|
print('raising')
|
||||||
|
raise Exception
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
yield from raise_task()
|
||||||
|
except:
|
||||||
|
print('main exception')
|
||||||
|
|
||||||
|
yield from noop_task()
|
||||||
|
|
||||||
|
for z in main():
|
||||||
|
print('outer iter', z)
|
33
tests/basics/generator_throw_nested.py
Normal file
33
tests/basics/generator_throw_nested.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Tests that the correct nested exception handler is used when
|
||||||
|
# throwing into a generator (previously failed on native emitter).
|
||||||
|
|
||||||
|
def gen():
|
||||||
|
try:
|
||||||
|
yield 1
|
||||||
|
try:
|
||||||
|
yield 2
|
||||||
|
try:
|
||||||
|
yield 3
|
||||||
|
except Exception:
|
||||||
|
yield 4
|
||||||
|
print(0)
|
||||||
|
yield 5
|
||||||
|
except Exception:
|
||||||
|
yield 6
|
||||||
|
print(1)
|
||||||
|
yield 7
|
||||||
|
except Exception:
|
||||||
|
yield 8
|
||||||
|
print(2)
|
||||||
|
yield 9
|
||||||
|
|
||||||
|
for i in range(1, 10):
|
||||||
|
g = gen()
|
||||||
|
try:
|
||||||
|
for _ in range(i):
|
||||||
|
print(next(g))
|
||||||
|
print(g.throw(ValueError))
|
||||||
|
except ValueError:
|
||||||
|
print('ValueError')
|
||||||
|
except StopIteration:
|
||||||
|
print('StopIteration')
|
Loading…
x
Reference in New Issue
Block a user