summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/generator_throw_nested.py
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2020-01-24 18:07:32 +1100
committerDamien George <damien.p.george@gmail.com>2020-01-27 13:16:06 +1100
commit1f4b607116ea0f06111847510ba5b1cd8080bf7f (patch)
tree6704a2a23a725deb22e8dd73d7b35aefc2b299e4 /tests/basics/generator_throw_nested.py
parentd89ed3e62b152174c3eb5c96713e9b983b11f7ed (diff)
downloadmicropython-1f4b607116ea0f06111847510ba5b1cd8080bf7f.tar.gz
micropython-1f4b607116ea0f06111847510ba5b1cd8080bf7f.zip
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.
Diffstat (limited to 'tests/basics/generator_throw_nested.py')
-rw-r--r--tests/basics/generator_throw_nested.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/basics/generator_throw_nested.py b/tests/basics/generator_throw_nested.py
new file mode 100644
index 0000000000..5ef1668788
--- /dev/null
+++ b/tests/basics/generator_throw_nested.py
@@ -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')