tests: Rewrite some tests so they can run without needing eval/exec.
For builds without the compiler enabled (and hence without eval/exec) it is useful to still be able to run as many tests as possible.
This commit is contained in:
parent
6031957473
commit
04c55f5828
|
@ -1,31 +1,44 @@
|
||||||
# test errors from bad function calls
|
# test errors from bad function calls
|
||||||
|
|
||||||
def test_exc(code, exc):
|
|
||||||
try:
|
|
||||||
exec(code)
|
|
||||||
print("no exception")
|
|
||||||
except exc:
|
|
||||||
print("right exception")
|
|
||||||
except:
|
|
||||||
print("wrong exception")
|
|
||||||
|
|
||||||
# function doesn't take keyword args
|
# function doesn't take keyword args
|
||||||
test_exc("[].append(x=1)", TypeError)
|
try:
|
||||||
|
[].append(x=1)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# function with variable number of positional args given too few
|
# function with variable number of positional args given too few
|
||||||
test_exc("round()", TypeError)
|
try:
|
||||||
|
round()
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# function with variable number of positional args given too many
|
# function with variable number of positional args given too many
|
||||||
test_exc("round(1, 2, 3)", TypeError)
|
try:
|
||||||
|
round(1, 2, 3)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# function with fixed number of positional args given wrong number
|
# function with fixed number of positional args given wrong number
|
||||||
test_exc("[].append(1, 2)", TypeError)
|
try:
|
||||||
|
[].append(1, 2)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# function with keyword args given extra positional args
|
# function with keyword args given extra positional args
|
||||||
test_exc("[].sort(1)", TypeError)
|
try:
|
||||||
|
[].sort(1)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# function with keyword args given extra keyword args
|
# function with keyword args given extra keyword args
|
||||||
test_exc("[].sort(noexist=1)", TypeError)
|
try:
|
||||||
|
[].sort(noexist=1)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# kw given for positional, but a different positional is missing
|
# kw given for positional, but a different positional is missing
|
||||||
test_exc("def f(x, y): pass\nf(x=1)", TypeError)
|
try:
|
||||||
|
def f(x, y): pass
|
||||||
|
f(x=1)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
|
@ -5,14 +5,8 @@ except:
|
||||||
print("SKIP")
|
print("SKIP")
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
|
|
||||||
def test_exc(code, exc):
|
|
||||||
try:
|
|
||||||
exec(code)
|
|
||||||
print("no exception")
|
|
||||||
except exc:
|
|
||||||
print("right exception")
|
|
||||||
except:
|
|
||||||
print("wrong exception")
|
|
||||||
|
|
||||||
# function with keyword args not given a specific keyword arg
|
# function with keyword args not given a specific keyword arg
|
||||||
test_exc("enumerate()", TypeError)
|
try:
|
||||||
|
enumerate()
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
|
@ -1,44 +1,89 @@
|
||||||
# test errors from bad operations (unary, binary, etc)
|
# test errors from bad operations (unary, binary, etc)
|
||||||
|
|
||||||
def test_exc(code, exc):
|
|
||||||
try:
|
|
||||||
exec(code)
|
|
||||||
print("no exception")
|
|
||||||
except exc:
|
|
||||||
print("right exception")
|
|
||||||
except:
|
|
||||||
print("wrong exception")
|
|
||||||
|
|
||||||
# unsupported unary operators
|
# unsupported unary operators
|
||||||
test_exc("~None", TypeError)
|
try:
|
||||||
test_exc("~''", TypeError)
|
~None
|
||||||
test_exc("~[]", TypeError)
|
except TypeError:
|
||||||
test_exc("~bytearray()", TypeError)
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
~''
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
~[]
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
~bytearray()
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# unsupported binary operators
|
# unsupported binary operators
|
||||||
test_exc("False in True", TypeError)
|
try:
|
||||||
test_exc("1 * {}", TypeError)
|
False in True
|
||||||
test_exc("1 in 1", TypeError)
|
except TypeError:
|
||||||
test_exc("bytearray() // 2", TypeError)
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
1 * {}
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
1 in 1
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
bytearray() // 2
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# object with buffer protocol needed on rhs
|
# object with buffer protocol needed on rhs
|
||||||
test_exc("bytearray(1) + 1", TypeError)
|
try:
|
||||||
|
bytearray(1) + 1
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# unsupported subscription
|
# unsupported subscription
|
||||||
test_exc("1[0]", TypeError)
|
try:
|
||||||
test_exc("1[0] = 1", TypeError)
|
1[0]
|
||||||
test_exc("''['']", TypeError)
|
except TypeError:
|
||||||
test_exc("'a'[0] = 1", TypeError)
|
print('TypeError')
|
||||||
test_exc("del 1[0]", TypeError)
|
try:
|
||||||
|
1[0] = 1
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
''['']
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
'a'[0] = 1
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
try:
|
||||||
|
del 1[0]
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# not callable
|
# not callable
|
||||||
test_exc("1()", TypeError)
|
try:
|
||||||
|
1()
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# not an iterator
|
# not an iterator
|
||||||
test_exc("next(1)", TypeError)
|
try:
|
||||||
|
next(1)
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# must be an exception type
|
# must be an exception type
|
||||||
test_exc("raise 1", TypeError)
|
try:
|
||||||
|
raise 1
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
||||||
# no such name in import
|
# no such name in import
|
||||||
test_exc("from sys import youcannotimportmebecauseidontexist", ImportError)
|
try:
|
||||||
|
from sys import youcannotimportmebecauseidontexist
|
||||||
|
except ImportError:
|
||||||
|
print('ImportError')
|
||||||
|
|
|
@ -10,4 +10,7 @@ def test_exc(code, exc):
|
||||||
print("wrong exception")
|
print("wrong exception")
|
||||||
|
|
||||||
# object with buffer protocol needed on rhs
|
# object with buffer protocol needed on rhs
|
||||||
test_exc("(1 << 70) in 1", TypeError)
|
try:
|
||||||
|
(1 << 70) in 1
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
|
@ -5,14 +5,9 @@ except:
|
||||||
print("SKIP")
|
print("SKIP")
|
||||||
raise SystemExit
|
raise SystemExit
|
||||||
|
|
||||||
def test_exc(code, exc):
|
|
||||||
try:
|
|
||||||
exec(code)
|
|
||||||
print("no exception")
|
|
||||||
except exc:
|
|
||||||
print("right exception")
|
|
||||||
except:
|
|
||||||
print("wrong exception")
|
|
||||||
|
|
||||||
# unsupported binary operators
|
# unsupported binary operators
|
||||||
test_exc("m = memoryview(bytearray())\nm += bytearray()", TypeError)
|
try:
|
||||||
|
m = memoryview(bytearray())
|
||||||
|
m += bytearray()
|
||||||
|
except TypeError:
|
||||||
|
print('TypeError')
|
||||||
|
|
Loading…
Reference in New Issue