diff options
Diffstat (limited to 'tests/basics/op_error.py')
-rw-r--r-- | tests/basics/op_error.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/basics/op_error.py b/tests/basics/op_error.py new file mode 100644 index 000000000..cfd6ffa8c --- /dev/null +++ b/tests/basics/op_error.py @@ -0,0 +1,43 @@ +# 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("~bytearray()", 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) +test_exc("m = memoryview(bytearray())\nm += bytearray()", TypeError) + +# object with buffer protocol needed on rhs +test_exc("bytearray(1) + 1", TypeError) +test_exc("(1 << 70) in 1", TypeError) + +# unsupported subscription +test_exc("1[0]", TypeError) +test_exc("1[0] = 1", TypeError) +test_exc("del 1[0]", TypeError) + +# not callable +test_exc("1()", TypeError) + +# not an iterator +test_exc("next(1)", TypeError) + +# must be an exception type +test_exc("raise 1", TypeError) + +# no such name in import +test_exc("from sys import youcannotimportmebecauseidontexist", ImportError) |