diff options
-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 1f76e13f3c..063bed25e2 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 0000000000..86d580a6d5 --- /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 0000000000..218e332e50 --- /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 067ab2b8eb..536f500823 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 0000000000..acdb6a06c9 --- /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 0000000000..6e976eab1d --- /dev/null +++ b/tests/basics/generator_throw_multi_arg.py.exp @@ -0,0 +1,6 @@ +123 +GeneratorExit () +456 +123 +GeneratorExit (123,) +456 |