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:
@@ -1,44 +1,89 @@
|
||||
# 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
|
||||
test_exc("~None", TypeError)
|
||||
test_exc("~''", TypeError)
|
||||
test_exc("~[]", TypeError)
|
||||
test_exc("~bytearray()", TypeError)
|
||||
try:
|
||||
~None
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
try:
|
||||
~''
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
try:
|
||||
~[]
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
try:
|
||||
~bytearray()
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
|
||||
# unsupported binary operators
|
||||
test_exc("False in True", TypeError)
|
||||
test_exc("1 * {}", TypeError)
|
||||
test_exc("1 in 1", TypeError)
|
||||
test_exc("bytearray() // 2", TypeError)
|
||||
try:
|
||||
False in True
|
||||
except 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
|
||||
test_exc("bytearray(1) + 1", TypeError)
|
||||
try:
|
||||
bytearray(1) + 1
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
|
||||
# unsupported subscription
|
||||
test_exc("1[0]", TypeError)
|
||||
test_exc("1[0] = 1", TypeError)
|
||||
test_exc("''['']", TypeError)
|
||||
test_exc("'a'[0] = 1", TypeError)
|
||||
test_exc("del 1[0]", TypeError)
|
||||
try:
|
||||
1[0]
|
||||
except TypeError:
|
||||
print('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
|
||||
test_exc("1()", TypeError)
|
||||
try:
|
||||
1()
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
|
||||
# not an iterator
|
||||
test_exc("next(1)", TypeError)
|
||||
try:
|
||||
next(1)
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
|
||||
# must be an exception type
|
||||
test_exc("raise 1", TypeError)
|
||||
try:
|
||||
raise 1
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
|
||||
# no such name in import
|
||||
test_exc("from sys import youcannotimportmebecauseidontexist", ImportError)
|
||||
try:
|
||||
from sys import youcannotimportmebecauseidontexist
|
||||
except ImportError:
|
||||
print('ImportError')
|
||||
|
||||
Reference in New Issue
Block a user