diff options
author | Damien George <damien.p.george@gmail.com> | 2017-01-17 00:17:44 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-01-17 00:17:44 +1100 |
commit | 96baaa68a4430efd585f2186976cfa473ca73bfc (patch) | |
tree | 926f422e0eeb3af4adaef8a57e5a9e9ed774b00c /tests | |
parent | 239f92029910cddb08a2669f3ebcd987f0a2d0a8 (diff) | |
download | micropython-96baaa68a4430efd585f2186976cfa473ca73bfc.tar.gz micropython-96baaa68a4430efd585f2186976cfa473ca73bfc.zip |
tests: Update tests, and add new ones, for recent generator tweaks.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basics/gen_yield_from_throw2.py | 15 | ||||
-rw-r--r-- | tests/basics/gen_yield_from_throw2.py.exp | 3 | ||||
-rw-r--r-- | tests/basics/gen_yield_from_throw3.py | 30 | ||||
-rwxr-xr-x | tests/run-tests | 2 |
4 files changed, 40 insertions, 10 deletions
diff --git a/tests/basics/gen_yield_from_throw2.py b/tests/basics/gen_yield_from_throw2.py index 2cff9e08ba..0abfdd8cc3 100644 --- a/tests/basics/gen_yield_from_throw2.py +++ b/tests/basics/gen_yield_from_throw2.py @@ -1,5 +1,5 @@ -# uPy differs from CPython for this test -# generator ignored GeneratorExit +# generator ignores a thrown GeneratorExit (this is allowed) + def gen(): try: yield 123 @@ -7,9 +7,12 @@ def gen(): print('GeneratorExit') yield 456 +# thrown a class g = gen() print(next(g)) -try: - g.throw(GeneratorExit) -except RuntimeError: - print('RuntimeError') +print(g.throw(GeneratorExit)) + +# thrown an instance +g = gen() +print(next(g)) +print(g.throw(GeneratorExit())) diff --git a/tests/basics/gen_yield_from_throw2.py.exp b/tests/basics/gen_yield_from_throw2.py.exp deleted file mode 100644 index d5805b4947..0000000000 --- a/tests/basics/gen_yield_from_throw2.py.exp +++ /dev/null @@ -1,3 +0,0 @@ -123 -GeneratorExit -RuntimeError diff --git a/tests/basics/gen_yield_from_throw3.py b/tests/basics/gen_yield_from_throw3.py new file mode 100644 index 0000000000..0f6c7c8429 --- /dev/null +++ b/tests/basics/gen_yield_from_throw3.py @@ -0,0 +1,30 @@ +# yield-from a user-defined generator with a throw() method + +class Iter: + def __iter__(self): + return self + + def __next__(self): + return 1 + + def throw(self, x): + print('throw', x) + return 456 + +def gen(): + yield from Iter() + +# calling close() should not call throw() +g = gen() +print(next(g)) +g.close() + +# can throw a non-exception object +g = gen() +print(next(g)) +print(g.throw(123)) + +# throwing an exception class just injects that class +g = gen() +print(next(g)) +print(g.throw(ZeroDivisionError)) diff --git a/tests/run-tests b/tests/run-tests index 91282667d8..b835047a27 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -281,7 +281,7 @@ def run_tests(pyb, tests, args): # Some tests are known to fail with native emitter # Remove them from the below when they work if args.emit == 'native': - skip_tests.update({'basics/%s.py' % t for t in 'gen_yield_from gen_yield_from_close gen_yield_from_ducktype gen_yield_from_exc gen_yield_from_iter gen_yield_from_send gen_yield_from_stopped gen_yield_from_throw gen_yield_from_throw2 generator1 generator2 generator_args generator_close generator_closure generator_exc generator_return generator_send'.split()}) # require yield + skip_tests.update({'basics/%s.py' % t for t in 'gen_yield_from gen_yield_from_close gen_yield_from_ducktype gen_yield_from_exc gen_yield_from_iter gen_yield_from_send gen_yield_from_stopped gen_yield_from_throw gen_yield_from_throw2 gen_yield_from_throw3 generator1 generator2 generator_args generator_close generator_closure generator_exc generator_return generator_send'.split()}) # require yield skip_tests.update({'basics/%s.py' % t for t in 'bytes_gen class_store_class globals_del string_join'.split()}) # require yield skip_tests.update({'basics/async_%s.py' % t for t in 'def await await2 for for2 with with2'.split()}) # require yield skip_tests.update({'basics/%s.py' % t for t in 'try_reraise try_reraise2'.split()}) # require raise_varargs |