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.
pull/5585/head
Jim Mussared 2020-01-24 18:07:32 +11:00 zatwierdzone przez Damien George
rodzic d89ed3e62b
commit 1f4b607116
2 zmienionych plików z 56 dodań i 0 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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')