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
|
@ -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)
|
|
@ -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…
Reference in New Issue