diff options
| author | Damien George <damien@micropython.org> | 2024-05-27 12:38:55 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2024-05-27 13:56:55 +1000 |
| commit | 1a2fdcac0d3f38146286e8fc3a504648f499c215 (patch) | |
| tree | 1afad35a99d5169290f984e5b5720cdbb83f8cf3 | |
| parent | 2e852522b178e6e9b2f0cdb954ba44aa9e7d7c0d (diff) | |
tests/basics: Split out generator.throw tests that pass multiple args.
The three-argument form of `.throw()` is deprecated since CPython 3.12. So
split out into separate tests (with .exp files) the parts of the generator
tests that test more than one argument.
Signed-off-by: Damien George <damien@micropython.org>
| -rw-r--r-- | tests/basics/gen_yield_from_throw.py | 18 | ||||
| -rw-r--r-- | tests/basics/gen_yield_from_throw_multi_arg.py | 34 | ||||
| -rw-r--r-- | tests/basics/gen_yield_from_throw_multi_arg.py.exp | 8 | ||||
| -rw-r--r-- | tests/basics/generator_throw.py | 10 | ||||
| -rw-r--r-- | tests/basics/generator_throw_multi_arg.py | 21 | ||||
| -rw-r--r-- | tests/basics/generator_throw_multi_arg.py.exp | 6 |
6 files changed, 69 insertions, 28 deletions
diff --git a/tests/basics/gen_yield_from_throw.py b/tests/basics/gen_yield_from_throw.py index 1f76e13f3..063bed25e 100644 --- a/tests/basics/gen_yield_from_throw.py +++ b/tests/basics/gen_yield_from_throw.py @@ -17,24 +17,6 @@ try: except TypeError: print("got TypeError from downstream!") -# passing None as second argument to throw -g = gen2() -print(next(g)) -print(g.throw(ValueError, None)) -try: - print(next(g)) -except TypeError: - print("got TypeError from downstream!") - -# passing an exception instance as second argument to throw -g = gen2() -print(next(g)) -print(g.throw(ValueError, ValueError(123))) -try: - print(next(g)) -except TypeError: - print("got TypeError from downstream!") - # thrown value is caught and then generator returns normally def gen(): try: diff --git a/tests/basics/gen_yield_from_throw_multi_arg.py b/tests/basics/gen_yield_from_throw_multi_arg.py new file mode 100644 index 000000000..86d580a6d --- /dev/null +++ b/tests/basics/gen_yield_from_throw_multi_arg.py @@ -0,0 +1,34 @@ +# Test generator .throw() with multiple arguments. +# Using multiple arguments is deprecated since CPython 3.12. + + +def gen(): + try: + yield 1 + except ValueError as e: + print("got ValueError from upstream!", repr(e.args)) + yield "str1" + raise TypeError + + +def gen2(): + print((yield from gen())) + + +# Passing None as second argument to throw. +g = gen2() +print(next(g)) +print(g.throw(ValueError, None)) +try: + print(next(g)) +except TypeError: + print("got TypeError from downstream!") + +# Passing an exception instance as second argument to throw. +g = gen2() +print(next(g)) +print(g.throw(ValueError, ValueError(123))) +try: + print(next(g)) +except TypeError: + print("got TypeError from downstream!") diff --git a/tests/basics/gen_yield_from_throw_multi_arg.py.exp b/tests/basics/gen_yield_from_throw_multi_arg.py.exp new file mode 100644 index 000000000..218e332e5 --- /dev/null +++ b/tests/basics/gen_yield_from_throw_multi_arg.py.exp @@ -0,0 +1,8 @@ +1 +got ValueError from upstream! () +str1 +got TypeError from downstream! +1 +got ValueError from upstream! (123,) +str1 +got TypeError from downstream! diff --git a/tests/basics/generator_throw.py b/tests/basics/generator_throw.py index 067ab2b8e..536f50082 100644 --- a/tests/basics/generator_throw.py +++ b/tests/basics/generator_throw.py @@ -41,13 +41,3 @@ print(g.throw(GeneratorExit)) g = gen() print(next(g)) print(g.throw(GeneratorExit())) - -# thrown an instance with None as second arg -g = gen() -print(next(g)) -print(g.throw(GeneratorExit(), None)) - -# thrown a class and instance -g = gen() -print(next(g)) -print(g.throw(GeneratorExit, GeneratorExit(123))) diff --git a/tests/basics/generator_throw_multi_arg.py b/tests/basics/generator_throw_multi_arg.py new file mode 100644 index 000000000..acdb6a06c --- /dev/null +++ b/tests/basics/generator_throw_multi_arg.py @@ -0,0 +1,21 @@ +# Test generator .throw() with multiple arguments. +# Using multiple arguments is deprecated since CPython 3.12. + +# Generator ignores a thrown GeneratorExit (this is allowed). +def gen(): + try: + yield 123 + except GeneratorExit as e: + print("GeneratorExit", repr(e.args)) + yield 456 + + +# Thrown an instance with None as second arg. +g = gen() +print(next(g)) +print(g.throw(GeneratorExit(), None)) + +# Thrown a class and instance. +g = gen() +print(next(g)) +print(g.throw(GeneratorExit, GeneratorExit(123))) diff --git a/tests/basics/generator_throw_multi_arg.py.exp b/tests/basics/generator_throw_multi_arg.py.exp new file mode 100644 index 000000000..6e976eab1 --- /dev/null +++ b/tests/basics/generator_throw_multi_arg.py.exp @@ -0,0 +1,6 @@ +123 +GeneratorExit () +456 +123 +GeneratorExit (123,) +456 |
