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>
This commit is contained in:
parent
2e852522b1
commit
1a2fdcac0d
@ -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:
|
||||
|
||||
34
tests/basics/gen_yield_from_throw_multi_arg.py
Normal file
34
tests/basics/gen_yield_from_throw_multi_arg.py
Normal file
@ -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!")
|
||||
8
tests/basics/gen_yield_from_throw_multi_arg.py.exp
Normal file
8
tests/basics/gen_yield_from_throw_multi_arg.py.exp
Normal file
@ -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!
|
||||
@ -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)))
|
||||
|
||||
21
tests/basics/generator_throw_multi_arg.py
Normal file
21
tests/basics/generator_throw_multi_arg.py
Normal file
@ -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)))
|
||||
6
tests/basics/generator_throw_multi_arg.py.exp
Normal file
6
tests/basics/generator_throw_multi_arg.py.exp
Normal file
@ -0,0 +1,6 @@
|
||||
123
|
||||
GeneratorExit ()
|
||||
456
|
||||
123
|
||||
GeneratorExit (123,)
|
||||
456
|
||||
Loading…
x
Reference in New Issue
Block a user