summaryrefslogtreecommitdiff
path: root/tests/basics
diff options
context:
space:
mode:
authorDaniel Tralamazza <daniel@tralamazza.com>2017-08-08 00:45:58 +0200
committerDaniel Tralamazza <daniel@tralamazza.com>2017-08-08 00:45:58 +0200
commitb53b6913147bdee5aef1b54f7728d44580dd0935 (patch)
treecfbfad1ddf3ef386131ec5a39961be70d4b60398 /tests/basics
parent3e0d3d283d5619e52e04dc8484d7bf413e66d130 (diff)
parent6c55cdafa32e4db9e2aaf08b1ec597b4723721ea (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'tests/basics')
-rw-r--r--tests/basics/array1.py3
-rw-r--r--tests/basics/array_add.py3
-rw-r--r--tests/basics/array_construct.py3
-rw-r--r--tests/basics/array_construct2.py3
-rw-r--r--tests/basics/array_construct_endian.py3
-rw-r--r--tests/basics/array_intbig.py3
-rw-r--r--tests/basics/array_micropython.py3
-rw-r--r--tests/basics/attrtuple1.py3
-rw-r--r--tests/basics/builtin_delattr.py3
-rw-r--r--tests/basics/builtin_exec.py32
-rw-r--r--tests/basics/builtin_hash_gen.py7
-rw-r--r--tests/basics/builtin_help.py3
-rw-r--r--tests/basics/builtin_minmax.py3
-rw-r--r--tests/basics/builtin_override.py3
-rw-r--r--tests/basics/builtin_pow3.py3
-rw-r--r--tests/basics/builtin_pow3_intbig.py3
-rw-r--r--tests/basics/builtin_property.py3
-rw-r--r--tests/basics/builtin_range_attrs.py3
-rw-r--r--tests/basics/builtin_reversed.py3
-rw-r--r--tests/basics/builtin_sorted.py3
-rw-r--r--tests/basics/bytearray_construct_array.py3
-rw-r--r--tests/basics/bytearray_construct_endian.py3
-rw-r--r--tests/basics/bytearray_slice_assign.py5
-rw-r--r--tests/basics/bytes_add_array.py3
-rw-r--r--tests/basics/bytes_add_endian.py3
-rw-r--r--tests/basics/bytes_compare_array.py3
-rw-r--r--tests/basics/bytes_construct_array.py3
-rw-r--r--tests/basics/bytes_construct_endian.py3
-rw-r--r--tests/basics/bytes_partition.py3
-rw-r--r--tests/basics/class_delattr_setattr.py3
-rw-r--r--tests/basics/class_descriptor.py3
-rw-r--r--tests/basics/class_new.py3
-rw-r--r--tests/basics/class_store_class.py3
-rw-r--r--tests/basics/class_super_object.py3
-rw-r--r--tests/basics/dict_fromkeys2.py3
-rw-r--r--tests/basics/enumerate.py3
-rw-r--r--tests/basics/errno1.py3
-rw-r--r--tests/basics/exec1.py6
-rw-r--r--tests/basics/filter.py3
-rw-r--r--tests/basics/for_else.py43
-rw-r--r--tests/basics/frozenset1.py3
-rw-r--r--tests/basics/frozenset_add.py3
-rw-r--r--tests/basics/frozenset_binop.py3
-rw-r--r--tests/basics/frozenset_copy.py3
-rw-r--r--tests/basics/frozenset_difference.py3
-rw-r--r--tests/basics/frozenset_set.py3
-rw-r--r--tests/basics/fun_error2.py3
-rw-r--r--tests/basics/gc1.py3
-rw-r--r--tests/basics/int_bytes.py12
-rw-r--r--tests/basics/int_bytes_intbig.py2
-rw-r--r--tests/basics/int_bytes_notimpl.py4
-rw-r--r--tests/basics/int_bytes_notimpl.py.exp1
-rw-r--r--tests/basics/list_slice_assign.py2
-rw-r--r--tests/basics/memoryview1.py3
-rw-r--r--tests/basics/memoryview2.py3
-rw-r--r--tests/basics/memoryview_gc.py3
-rw-r--r--tests/basics/memoryview_intbig.py3
-rw-r--r--tests/basics/namedtuple1.py6
-rw-r--r--tests/basics/object_dict.py3
-rw-r--r--tests/basics/object_new.py3
-rw-r--r--tests/basics/op_error_memoryview.py3
-rw-r--r--tests/basics/op_precedence.py43
-rw-r--r--tests/basics/ordereddict1.py3
-rw-r--r--tests/basics/ordereddict_eq.py3
-rw-r--r--tests/basics/parser.py3
-rw-r--r--tests/basics/python34.py2
-rw-r--r--tests/basics/python34.py.exp2
-rw-r--r--tests/basics/set_type.py3
-rw-r--r--tests/basics/slice_attrs.py3
-rw-r--r--tests/basics/special_methods2.py3
-rw-r--r--tests/basics/string_center.py3
-rw-r--r--tests/basics/string_partition.py3
-rw-r--r--tests/basics/string_rpartition.py3
-rw-r--r--tests/basics/string_splitlines.py3
-rw-r--r--tests/basics/struct1.py3
-rw-r--r--tests/basics/struct1_intbig.py3
-rw-r--r--tests/basics/struct2.py3
-rw-r--r--tests/basics/struct_micropython.py3
-rw-r--r--tests/basics/subclass_classmethod.py3
-rw-r--r--tests/basics/sys1.py2
-rw-r--r--tests/basics/zip.py3
81 files changed, 217 insertions, 150 deletions
diff --git a/tests/basics/array1.py b/tests/basics/array1.py
index 43f775b79..bad879035 100644
--- a/tests/basics/array1.py
+++ b/tests/basics/array1.py
@@ -1,9 +1,8 @@
try:
import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
a = array.array('B', [1, 2, 3])
print(a, len(a))
diff --git a/tests/basics/array_add.py b/tests/basics/array_add.py
index 41cd77b42..76ce59f76 100644
--- a/tests/basics/array_add.py
+++ b/tests/basics/array_add.py
@@ -2,9 +2,8 @@
try:
import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
a1 = array.array('I', [1])
a2 = array.array('I', [2])
diff --git a/tests/basics/array_construct.py b/tests/basics/array_construct.py
index cafa57784..2221de990 100644
--- a/tests/basics/array_construct.py
+++ b/tests/basics/array_construct.py
@@ -3,9 +3,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# tuple, list
print(array('b', (1, 2)))
diff --git a/tests/basics/array_construct2.py b/tests/basics/array_construct2.py
index d1c1a6c70..c305b7f01 100644
--- a/tests/basics/array_construct2.py
+++ b/tests/basics/array_construct2.py
@@ -1,9 +1,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# construct from something with unknown length (requires generators)
print(array('i', (i for i in range(10))))
diff --git a/tests/basics/array_construct_endian.py b/tests/basics/array_construct_endian.py
index bf34b05d1..990d7b1ea 100644
--- a/tests/basics/array_construct_endian.py
+++ b/tests/basics/array_construct_endian.py
@@ -3,9 +3,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# raw copy from bytes, bytearray
print(array('h', b'12'))
diff --git a/tests/basics/array_intbig.py b/tests/basics/array_intbig.py
index 4a3b2a0d4..5702a8ae6 100644
--- a/tests/basics/array_intbig.py
+++ b/tests/basics/array_intbig.py
@@ -3,9 +3,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(array('L', [0, 2**32-1]))
print(array('l', [-2**31, 0, 2**31-1]))
diff --git a/tests/basics/array_micropython.py b/tests/basics/array_micropython.py
index 0c1df0923..e26ad7ae9 100644
--- a/tests/basics/array_micropython.py
+++ b/tests/basics/array_micropython.py
@@ -2,9 +2,8 @@
try:
import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# arrays of objects
a = array.array('O')
diff --git a/tests/basics/attrtuple1.py b/tests/basics/attrtuple1.py
index 597bfc2a3..78a0fbed1 100644
--- a/tests/basics/attrtuple1.py
+++ b/tests/basics/attrtuple1.py
@@ -8,9 +8,8 @@ t = sys.implementation
try:
t.name
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# test printing of attrtuple
diff --git a/tests/basics/builtin_delattr.py b/tests/basics/builtin_delattr.py
index 9b38837e4..65bd0f210 100644
--- a/tests/basics/builtin_delattr.py
+++ b/tests/basics/builtin_delattr.py
@@ -2,9 +2,8 @@
try:
delattr
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
class A: pass
a = A()
diff --git a/tests/basics/builtin_exec.py b/tests/basics/builtin_exec.py
new file mode 100644
index 000000000..fd4e65c53
--- /dev/null
+++ b/tests/basics/builtin_exec.py
@@ -0,0 +1,32 @@
+print(exec("def foo(): return 42"))
+print(foo())
+
+d = {}
+exec("def bar(): return 84", d)
+print(d["bar"]())
+
+# passing None/dict as args to globals/locals
+foo = 11
+exec('print(foo)')
+exec('print(foo)', None)
+exec('print(foo)', {'foo':3}, None)
+exec('print(foo)', None, {'foo':3})
+exec('print(foo)', None, {'bar':3})
+exec('print(foo)', {'bar':3}, locals())
+
+try:
+ exec('print(foo)', {'bar':3}, None)
+except NameError:
+ print('NameError')
+
+# invalid arg passed to globals
+try:
+ exec('print(1)', 'foo')
+except TypeError:
+ print('TypeError')
+
+# invalid arg passed to locals
+try:
+ exec('print(1)', None, 123)
+except TypeError:
+ print('TypeError')
diff --git a/tests/basics/builtin_hash_gen.py b/tests/basics/builtin_hash_gen.py
new file mode 100644
index 000000000..d42e5ebfb
--- /dev/null
+++ b/tests/basics/builtin_hash_gen.py
@@ -0,0 +1,7 @@
+# test builtin hash function, on generators
+
+def gen():
+ yield
+
+print(type(hash(gen)))
+print(type(hash(gen())))
diff --git a/tests/basics/builtin_help.py b/tests/basics/builtin_help.py
index d554f308d..6ec39653f 100644
--- a/tests/basics/builtin_help.py
+++ b/tests/basics/builtin_help.py
@@ -4,8 +4,7 @@ try:
help
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
help() # no args
help(help) # help for a function
diff --git a/tests/basics/builtin_minmax.py b/tests/basics/builtin_minmax.py
index a925b3fe9..184398e64 100644
--- a/tests/basics/builtin_minmax.py
+++ b/tests/basics/builtin_minmax.py
@@ -3,9 +3,8 @@ try:
min
max
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(min(0,1))
print(min(1,0))
diff --git a/tests/basics/builtin_override.py b/tests/basics/builtin_override.py
index f3632e59a..9f91341ed 100644
--- a/tests/basics/builtin_override.py
+++ b/tests/basics/builtin_override.py
@@ -6,9 +6,8 @@ import builtins
try:
builtins.abs = lambda x: x + 1
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(abs(1))
diff --git a/tests/basics/builtin_pow3.py b/tests/basics/builtin_pow3.py
index dec7253bb..69b57e548 100644
--- a/tests/basics/builtin_pow3.py
+++ b/tests/basics/builtin_pow3.py
@@ -4,9 +4,8 @@
try:
print(pow(3, 4, 7))
except NotImplementedError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# 3 arg pow is defined to only work on integers
try:
diff --git a/tests/basics/builtin_pow3_intbig.py b/tests/basics/builtin_pow3_intbig.py
index 9f482cbde..bedc8b36b 100644
--- a/tests/basics/builtin_pow3_intbig.py
+++ b/tests/basics/builtin_pow3_intbig.py
@@ -4,9 +4,8 @@
try:
print(pow(3, 4, 7))
except NotImplementedError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(pow(555557, 1000002, 1000003))
diff --git a/tests/basics/builtin_property.py b/tests/basics/builtin_property.py
index ff4ff073c..89c3d4936 100644
--- a/tests/basics/builtin_property.py
+++ b/tests/basics/builtin_property.py
@@ -2,9 +2,8 @@
try:
property
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# create a property object explicitly
property()
diff --git a/tests/basics/builtin_range_attrs.py b/tests/basics/builtin_range_attrs.py
index 9327c802a..05d666d13 100644
--- a/tests/basics/builtin_range_attrs.py
+++ b/tests/basics/builtin_range_attrs.py
@@ -3,9 +3,8 @@
try:
range(0).start
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# attrs
print(range(1, 2, 3).start)
diff --git a/tests/basics/builtin_reversed.py b/tests/basics/builtin_reversed.py
index 59e9c7821..f43505a8b 100644
--- a/tests/basics/builtin_reversed.py
+++ b/tests/basics/builtin_reversed.py
@@ -2,9 +2,8 @@
try:
reversed
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# list
print(list(reversed([])))
diff --git a/tests/basics/builtin_sorted.py b/tests/basics/builtin_sorted.py
index 68855b61b..6435f86d0 100644
--- a/tests/basics/builtin_sorted.py
+++ b/tests/basics/builtin_sorted.py
@@ -3,9 +3,8 @@ try:
sorted
set
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(sorted(set(range(100))))
print(sorted(set(range(100)), key=lambda x: x + 100*(x % 2)))
diff --git a/tests/basics/bytearray_construct_array.py b/tests/basics/bytearray_construct_array.py
index 6d45cafda..bde5fa08b 100644
--- a/tests/basics/bytearray_construct_array.py
+++ b/tests/basics/bytearray_construct_array.py
@@ -2,9 +2,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# arrays
print(bytearray(array('b', [1, 2])))
diff --git a/tests/basics/bytearray_construct_endian.py b/tests/basics/bytearray_construct_endian.py
index f68f9b89d..0002f19c5 100644
--- a/tests/basics/bytearray_construct_endian.py
+++ b/tests/basics/bytearray_construct_endian.py
@@ -2,9 +2,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# arrays
print(bytearray(array('h', [1, 2])))
diff --git a/tests/basics/bytearray_slice_assign.py b/tests/basics/bytearray_slice_assign.py
index c4b5c43e3..7f7d1d119 100644
--- a/tests/basics/bytearray_slice_assign.py
+++ b/tests/basics/bytearray_slice_assign.py
@@ -2,10 +2,9 @@ try:
bytearray()[:] = bytearray()
except TypeError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
-# test slices; only 2 argument version supported by Micro Python at the moment
+# test slices; only 2 argument version supported by MicroPython at the moment
x = bytearray(range(10))
# Assignment
diff --git a/tests/basics/bytes_add_array.py b/tests/basics/bytes_add_array.py
index 2b8cbccef..b17556d83 100644
--- a/tests/basics/bytes_add_array.py
+++ b/tests/basics/bytes_add_array.py
@@ -2,9 +2,8 @@
try:
import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# should be byteorder-neutral
print(b"123" + array.array('h', [0x1515]))
diff --git a/tests/basics/bytes_add_endian.py b/tests/basics/bytes_add_endian.py
index 1bbd0f2c3..8cfffa7b6 100644
--- a/tests/basics/bytes_add_endian.py
+++ b/tests/basics/bytes_add_endian.py
@@ -2,8 +2,7 @@
try:
import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(b"123" + array.array('i', [1]))
diff --git a/tests/basics/bytes_compare_array.py b/tests/basics/bytes_compare_array.py
index ad41d1d37..ad378de70 100644
--- a/tests/basics/bytes_compare_array.py
+++ b/tests/basics/bytes_compare_array.py
@@ -1,9 +1,8 @@
try:
import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(array.array('b', [1, 2]) in b'\x01\x02\x03')
# CPython gives False here
diff --git a/tests/basics/bytes_construct_array.py b/tests/basics/bytes_construct_array.py
index 72c2d0c58..453eb5901 100644
--- a/tests/basics/bytes_construct_array.py
+++ b/tests/basics/bytes_construct_array.py
@@ -2,9 +2,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# arrays
print(bytes(array('b', [1, 2])))
diff --git a/tests/basics/bytes_construct_endian.py b/tests/basics/bytes_construct_endian.py
index 77e0eaaa5..cf1a9f408 100644
--- a/tests/basics/bytes_construct_endian.py
+++ b/tests/basics/bytes_construct_endian.py
@@ -3,9 +3,8 @@
try:
from array import array
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# arrays
print(bytes(array('h', [1, 2])))
diff --git a/tests/basics/bytes_partition.py b/tests/basics/bytes_partition.py
index 7d3ffaaaa..5b503f544 100644
--- a/tests/basics/bytes_partition.py
+++ b/tests/basics/bytes_partition.py
@@ -2,8 +2,7 @@ try:
str.partition
except AttributeError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
print(b"asdf".partition(b'g'))
print(b"asdf".partition(b'a'))
diff --git a/tests/basics/class_delattr_setattr.py b/tests/basics/class_delattr_setattr.py
index 0d061aee6..190b4875b 100644
--- a/tests/basics/class_delattr_setattr.py
+++ b/tests/basics/class_delattr_setattr.py
@@ -6,9 +6,8 @@ try:
def __delattr__(self, attr): pass
del Test().noexist
except AttributeError:
- import sys
print('SKIP')
- sys.exit()
+ raise SystemExit
# this class just prints the calls to see if they were executed
class A():
diff --git a/tests/basics/class_descriptor.py b/tests/basics/class_descriptor.py
index 7f295f071..eb88ba7b9 100644
--- a/tests/basics/class_descriptor.py
+++ b/tests/basics/class_descriptor.py
@@ -21,9 +21,8 @@ m = Main()
try:
m.__class__
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
r = m.Forward
if 'Descriptor' in repr(r.__class__):
diff --git a/tests/basics/class_new.py b/tests/basics/class_new.py
index 0198456b2..9a7072ad0 100644
--- a/tests/basics/class_new.py
+++ b/tests/basics/class_new.py
@@ -3,9 +3,8 @@ try:
# nothing to test.
object.__new__
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
class A:
def __new__(cls):
print("A.__new__")
diff --git a/tests/basics/class_store_class.py b/tests/basics/class_store_class.py
index 00a291586..797f88f85 100644
--- a/tests/basics/class_store_class.py
+++ b/tests/basics/class_store_class.py
@@ -8,9 +8,8 @@ except ImportError:
try:
from ucollections import namedtuple
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
_DefragResultBase = namedtuple('DefragResult', [ 'foo', 'bar' ])
diff --git a/tests/basics/class_super_object.py b/tests/basics/class_super_object.py
index a841d34ab..1fddbb38f 100644
--- a/tests/basics/class_super_object.py
+++ b/tests/basics/class_super_object.py
@@ -4,9 +4,8 @@ try:
# nothing to test.
object.__init__
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
class Test(object):
def __init__(self):
diff --git a/tests/basics/dict_fromkeys2.py b/tests/basics/dict_fromkeys2.py
index 7ea0cc5b3..dce1e8ef5 100644
--- a/tests/basics/dict_fromkeys2.py
+++ b/tests/basics/dict_fromkeys2.py
@@ -1,9 +1,8 @@
try:
reversed
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# argument to fromkeys has no __len__
d = dict.fromkeys(reversed(range(1)))
diff --git a/tests/basics/enumerate.py b/tests/basics/enumerate.py
index 3cc1350a0..4f8239bf7 100644
--- a/tests/basics/enumerate.py
+++ b/tests/basics/enumerate.py
@@ -1,9 +1,8 @@
try:
enumerate
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(list(enumerate([])))
print(list(enumerate([1, 2, 3])))
diff --git a/tests/basics/errno1.py b/tests/basics/errno1.py
index eae1bbe1b..63930b767 100644
--- a/tests/basics/errno1.py
+++ b/tests/basics/errno1.py
@@ -4,8 +4,7 @@ try:
import uerrno
except ImportError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
# check that constants exist and are integers
print(type(uerrno.EIO))
diff --git a/tests/basics/exec1.py b/tests/basics/exec1.py
deleted file mode 100644
index 59de5d69a..000000000
--- a/tests/basics/exec1.py
+++ /dev/null
@@ -1,6 +0,0 @@
-print(exec("def foo(): return 42"))
-print(foo())
-
-d = {}
-exec("def bar(): return 84", d)
-print(d["bar"]())
diff --git a/tests/basics/filter.py b/tests/basics/filter.py
index d0b36733c..c6d97cf9b 100644
--- a/tests/basics/filter.py
+++ b/tests/basics/filter.py
@@ -1,9 +1,8 @@
try:
filter
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(list(filter(lambda x: x & 1, range(-3, 4))))
print(list(filter(None, range(-3, 4))))
diff --git a/tests/basics/for_else.py b/tests/basics/for_else.py
new file mode 100644
index 000000000..0bb941506
--- /dev/null
+++ b/tests/basics/for_else.py
@@ -0,0 +1,43 @@
+# test for-else statement
+
+# test optimised range with simple else
+for i in range(2):
+ print(i)
+else:
+ print('else')
+
+# test optimised range with break over else
+for i in range(2):
+ print(i)
+ break
+else:
+ print('else')
+
+# test nested optimised range with continue in the else
+for i in range(4):
+ print(i)
+ for j in range(4):
+ pass
+ else:
+ continue
+ break
+
+# test optimised range with non-constant end value
+N = 2
+for i in range(N):
+ print(i)
+else:
+ print('else')
+
+# test generic iterator with simple else
+for i in [0, 1]:
+ print(i)
+else:
+ print('else')
+
+# test generic iterator with break over else
+for i in [0, 1]:
+ print(i)
+ break
+else:
+ print('else')
diff --git a/tests/basics/frozenset1.py b/tests/basics/frozenset1.py
index 7a4a33540..7bec24c29 100644
--- a/tests/basics/frozenset1.py
+++ b/tests/basics/frozenset1.py
@@ -4,8 +4,7 @@ try:
frozenset
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
s = frozenset()
print(s)
diff --git a/tests/basics/frozenset_add.py b/tests/basics/frozenset_add.py
index 415a8c2e1..fe24fbaf1 100644
--- a/tests/basics/frozenset_add.py
+++ b/tests/basics/frozenset_add.py
@@ -2,8 +2,7 @@ try:
frozenset
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
s = frozenset({1, 2, 3, 4})
try:
diff --git a/tests/basics/frozenset_binop.py b/tests/basics/frozenset_binop.py
index 5cc07e9e1..61af07a23 100644
--- a/tests/basics/frozenset_binop.py
+++ b/tests/basics/frozenset_binop.py
@@ -2,8 +2,7 @@ try:
frozenset
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
sets = [
frozenset(), frozenset({1}), frozenset({1, 2}), frozenset({1, 2, 3}), frozenset({2, 3}),
diff --git a/tests/basics/frozenset_copy.py b/tests/basics/frozenset_copy.py
index 92e115d34..c90f541a1 100644
--- a/tests/basics/frozenset_copy.py
+++ b/tests/basics/frozenset_copy.py
@@ -2,8 +2,7 @@ try:
frozenset
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
s = frozenset({1, 2, 3, 4})
t = s.copy()
diff --git a/tests/basics/frozenset_difference.py b/tests/basics/frozenset_difference.py
index 3d142f959..bc8b9c21c 100644
--- a/tests/basics/frozenset_difference.py
+++ b/tests/basics/frozenset_difference.py
@@ -2,8 +2,7 @@ try:
frozenset
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
l = [1, 2, 3, 4]
s = frozenset(l)
diff --git a/tests/basics/frozenset_set.py b/tests/basics/frozenset_set.py
index b334694b5..3bf456acf 100644
--- a/tests/basics/frozenset_set.py
+++ b/tests/basics/frozenset_set.py
@@ -2,8 +2,7 @@ try:
frozenset
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
# Examples from https://docs.python.org/3/library/stdtypes.html#set
# "Instances of set are compared to instances of frozenset based on their
diff --git a/tests/basics/fun_error2.py b/tests/basics/fun_error2.py
index c4d2c0b64..2a00396e6 100644
--- a/tests/basics/fun_error2.py
+++ b/tests/basics/fun_error2.py
@@ -3,8 +3,7 @@ try:
enumerate
except:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
def test_exc(code, exc):
try:
diff --git a/tests/basics/gc1.py b/tests/basics/gc1.py
index be6c6faed..dcbe0bfcf 100644
--- a/tests/basics/gc1.py
+++ b/tests/basics/gc1.py
@@ -4,8 +4,7 @@ try:
import gc
except ImportError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
print(gc.isenabled())
gc.disable()
diff --git a/tests/basics/int_bytes.py b/tests/basics/int_bytes.py
index 93c00bba1..d1837ea75 100644
--- a/tests/basics/int_bytes.py
+++ b/tests/basics/int_bytes.py
@@ -8,3 +8,15 @@ print(int.from_bytes(b"\x00\x01\0\0\0\0\0\0", "little"))
# check that extra zero bytes don't change the internal int value
print(int.from_bytes(bytes(20), "little") == 0)
print(int.from_bytes(b"\x01" + bytes(20), "little") == 1)
+
+# big-endian conversion
+print((10).to_bytes(1, "big"))
+print((100).to_bytes(10, "big"))
+print(int.from_bytes(b"\0\0\0\0\0\0\0\0\0\x01", "big"))
+print(int.from_bytes(b"\x01\0", "big"))
+
+# negative number of bytes should raise an error
+try:
+ (1).to_bytes(-1, "little")
+except ValueError:
+ print("ValueError")
diff --git a/tests/basics/int_bytes_intbig.py b/tests/basics/int_bytes_intbig.py
index 0e0ad1cbb..147362bef 100644
--- a/tests/basics/int_bytes_intbig.py
+++ b/tests/basics/int_bytes_intbig.py
@@ -1,4 +1,5 @@
print((2**64).to_bytes(9, "little"))
+print((2**64).to_bytes(9, "big"))
b = bytes(range(20))
@@ -7,6 +8,7 @@ ib = int.from_bytes(b, "big")
print(il)
print(ib)
print(il.to_bytes(20, "little"))
+print(ib.to_bytes(20, "big"))
# check that extra zero bytes don't change the internal int value
print(int.from_bytes(b + bytes(10), "little") == int.from_bytes(b, "little"))
diff --git a/tests/basics/int_bytes_notimpl.py b/tests/basics/int_bytes_notimpl.py
deleted file mode 100644
index b149f4496..000000000
--- a/tests/basics/int_bytes_notimpl.py
+++ /dev/null
@@ -1,4 +0,0 @@
-try:
- print((10).to_bytes(1, "big"))
-except Exception as e:
- print(type(e))
diff --git a/tests/basics/int_bytes_notimpl.py.exp b/tests/basics/int_bytes_notimpl.py.exp
deleted file mode 100644
index 606649a69..000000000
--- a/tests/basics/int_bytes_notimpl.py.exp
+++ /dev/null
@@ -1 +0,0 @@
-<class 'NotImplementedError'>
diff --git a/tests/basics/list_slice_assign.py b/tests/basics/list_slice_assign.py
index 1ad1ef27c..885615717 100644
--- a/tests/basics/list_slice_assign.py
+++ b/tests/basics/list_slice_assign.py
@@ -1,4 +1,4 @@
-# test slices; only 2 argument version supported by Micro Python at the moment
+# test slices; only 2 argument version supported by MicroPython at the moment
x = list(range(10))
# Assignment
diff --git a/tests/basics/memoryview1.py b/tests/basics/memoryview1.py
index a771acdda..c4cc6ffab 100644
--- a/tests/basics/memoryview1.py
+++ b/tests/basics/memoryview1.py
@@ -2,9 +2,8 @@
try:
memoryview
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# test reading from bytes
b = b'1234'
diff --git a/tests/basics/memoryview2.py b/tests/basics/memoryview2.py
index 4b5af852b..06a7be59f 100644
--- a/tests/basics/memoryview2.py
+++ b/tests/basics/memoryview2.py
@@ -3,9 +3,8 @@ try:
from array import array
memoryview
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(list(memoryview(b'\x7f\x80\x81\xff')))
print(list(memoryview(array('b', [0x7f, -0x80]))))
diff --git a/tests/basics/memoryview_gc.py b/tests/basics/memoryview_gc.py
index 9d4857e36..d366cbbb1 100644
--- a/tests/basics/memoryview_gc.py
+++ b/tests/basics/memoryview_gc.py
@@ -2,9 +2,8 @@
try:
memoryview
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
b = bytearray(10)
m = memoryview(b)[1:]
diff --git a/tests/basics/memoryview_intbig.py b/tests/basics/memoryview_intbig.py
index 180f15d18..a76d9cbec 100644
--- a/tests/basics/memoryview_intbig.py
+++ b/tests/basics/memoryview_intbig.py
@@ -3,9 +3,8 @@ try:
from array import array
memoryview
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(list(memoryview(array('i', [0x7f000000, -0x80000000]))))
print(list(memoryview(array('I', [0x7f000000, 0x80000000, 0x81000000, 0xffffffff]))))
diff --git a/tests/basics/namedtuple1.py b/tests/basics/namedtuple1.py
index 70372f7ca..15e3b785e 100644
--- a/tests/basics/namedtuple1.py
+++ b/tests/basics/namedtuple1.py
@@ -4,9 +4,8 @@ try:
except ImportError:
from ucollections import namedtuple
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
T = namedtuple("Tup", ["foo", "bar"])
# CPython prints fully qualified name, what we don't bother to do so far
@@ -25,6 +24,9 @@ for t in T(1, 2), T(bar=1, foo=2):
print(isinstance(t, tuple))
+# Create using positional and keyword args
+print(T(3, bar=4))
+
try:
t[0] = 200
except TypeError:
diff --git a/tests/basics/object_dict.py b/tests/basics/object_dict.py
index e6fb7b3d9..7bf7094e3 100644
--- a/tests/basics/object_dict.py
+++ b/tests/basics/object_dict.py
@@ -1,4 +1,3 @@
-import sys
class Foo:
@@ -9,6 +8,6 @@ class Foo:
o = Foo()
if not hasattr(o, "__dict__"):
print("SKIP")
- sys.exit()
+ raise SystemExit
print(o.__dict__ == {'a': 1, 'b': 'bar'})
diff --git a/tests/basics/object_new.py b/tests/basics/object_new.py
index 568feccda..a9c9482cb 100644
--- a/tests/basics/object_new.py
+++ b/tests/basics/object_new.py
@@ -7,9 +7,8 @@ try:
# nothing to test.
object.__new__
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
class Foo:
diff --git a/tests/basics/op_error_memoryview.py b/tests/basics/op_error_memoryview.py
index 658ededc8..8d4403f77 100644
--- a/tests/basics/op_error_memoryview.py
+++ b/tests/basics/op_error_memoryview.py
@@ -2,9 +2,8 @@
try:
memoryview
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
def test_exc(code, exc):
try:
diff --git a/tests/basics/op_precedence.py b/tests/basics/op_precedence.py
new file mode 100644
index 000000000..519a2a113
--- /dev/null
+++ b/tests/basics/op_precedence.py
@@ -0,0 +1,43 @@
+# see https://docs.python.org/3/reference/expressions.html#operator-precedence
+
+# '|' is the least binding numeric operator
+
+# '^'
+# OK: 1 | (2 ^ 3) = 1 | 1 = 1
+# BAD: (1 | 2) ^ 3 = 3 ^ 3 = 0
+print(1 | 2 ^ 3)
+
+# '&'
+# OK: 3 ^ (2 & 1) = 3 ^ 0 = 3
+# BAD: (3 ^ 2) & 1 = 1 & 1 = 1
+print(3 ^ 2 & 1)
+
+# '<<', '>>'
+# OK: 2 & (3 << 1) = 2 & 6 = 2
+# BAD: (2 & 3) << 1 = 2 << 1 = 4
+print(2 & 3 << 1)
+# OK: 6 & (4 >> 1) = 6 & 2 = 2
+# BAD: (6 & 4) >> 1 = 2 >> 1 = 1
+print(6 & 4 >> 1)
+
+# '+', '-'
+# OK: 1 << (1 + 1) = 1 << 2 = 4
+# BAD: (1 << 1) + 1 = 2 + 1 = 3
+print(1 << 1 + 1)
+
+# '*', '/', '//', '%'
+# OK: 2 + (2 * 2) = 2 + 4 = 6
+# BAD: (2 + 2) * 2 = 4 * 2 = 8
+print(2 + 2 * 2)
+
+# '+x', '-x', '~x'
+
+# '**'
+# OK: -(2**2) = -4
+# BAD: (-2)**2 = 4
+print(-2**2)
+# OK: 2**(-1) = 0.5
+print(2**-1)
+
+# (expr...)
+print((2 + 2) * 2)
diff --git a/tests/basics/ordereddict1.py b/tests/basics/ordereddict1.py
index 7147968c5..d1633f0bb 100644
--- a/tests/basics/ordereddict1.py
+++ b/tests/basics/ordereddict1.py
@@ -5,8 +5,7 @@ except ImportError:
from ucollections import OrderedDict
except ImportError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
d = OrderedDict([(10, 20), ("b", 100), (1, 2)])
print(len(d))
diff --git a/tests/basics/ordereddict_eq.py b/tests/basics/ordereddict_eq.py
index 274660877..c69daf880 100644
--- a/tests/basics/ordereddict_eq.py
+++ b/tests/basics/ordereddict_eq.py
@@ -5,8 +5,7 @@ except ImportError:
from ucollections import OrderedDict
except ImportError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
x = OrderedDict()
y = OrderedDict()
diff --git a/tests/basics/parser.py b/tests/basics/parser.py
index 8fb2a49bf..626b67ad7 100644
--- a/tests/basics/parser.py
+++ b/tests/basics/parser.py
@@ -4,8 +4,7 @@ try:
compile
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
# completely empty string
# uPy and CPy differ for this case
diff --git a/tests/basics/python34.py b/tests/basics/python34.py
index a23f347d6..d5cc59ad6 100644
--- a/tests/basics/python34.py
+++ b/tests/basics/python34.py
@@ -20,6 +20,8 @@ def test_syntax(code):
print("SyntaxError")
test_syntax("f(*a, *b)") # can't have multiple * (in 3.5 we can)
test_syntax("f(**a, **b)") # can't have multiple ** (in 3.5 we can)
+test_syntax("f(*a, b)") # can't have positional after *
+test_syntax("f(**a, b)") # can't have positional after **
test_syntax("() = []") # can't assign to empty tuple (in 3.6 we can)
test_syntax("del ()") # can't delete empty tuple (in 3.6 we can)
diff --git a/tests/basics/python34.py.exp b/tests/basics/python34.py.exp
index f497df3b8..590fc364f 100644
--- a/tests/basics/python34.py.exp
+++ b/tests/basics/python34.py.exp
@@ -7,5 +7,7 @@ SyntaxError
SyntaxError
SyntaxError
SyntaxError
+SyntaxError
+SyntaxError
3.4
3 4
diff --git a/tests/basics/set_type.py b/tests/basics/set_type.py
index d790fa062..787a99e81 100644
--- a/tests/basics/set_type.py
+++ b/tests/basics/set_type.py
@@ -5,9 +5,8 @@
try:
set
except NameError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(set)
diff --git a/tests/basics/slice_attrs.py b/tests/basics/slice_attrs.py
index 67456ff8e..e85ead4ba 100644
--- a/tests/basics/slice_attrs.py
+++ b/tests/basics/slice_attrs.py
@@ -8,9 +8,8 @@ class A:
try:
t = A()[1:2]
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
A()[1:2:3]
diff --git a/tests/basics/special_methods2.py b/tests/basics/special_methods2.py
index 3623b30dc..ba7cf27cd 100644
--- a/tests/basics/special_methods2.py
+++ b/tests/basics/special_methods2.py
@@ -100,9 +100,8 @@ cud2 = Cud()
try:
+cud1
except TypeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# the following require MICROPY_PY_ALL_SPECIAL_METHODS
+cud1
diff --git a/tests/basics/string_center.py b/tests/basics/string_center.py
index a2739201a..40e8af4b8 100644
--- a/tests/basics/string_center.py
+++ b/tests/basics/string_center.py
@@ -1,9 +1,8 @@
try:
str.center
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print("foo".center(0))
print("foo".center(1))
diff --git a/tests/basics/string_partition.py b/tests/basics/string_partition.py
index b3b2f0907..bc36388fd 100644
--- a/tests/basics/string_partition.py
+++ b/tests/basics/string_partition.py
@@ -2,8 +2,7 @@ try:
str.partition
except AttributeError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
print("asdf".partition('g'))
print("asdf".partition('a'))
diff --git a/tests/basics/string_rpartition.py b/tests/basics/string_rpartition.py
index 84e0031fb..6d65dfaf2 100644
--- a/tests/basics/string_rpartition.py
+++ b/tests/basics/string_rpartition.py
@@ -2,8 +2,7 @@ try:
str.partition
except AttributeError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
print("asdf".rpartition('g'))
print("asdf".rpartition('a'))
diff --git a/tests/basics/string_splitlines.py b/tests/basics/string_splitlines.py
index 1d08f6e6d..c4c3fcb80 100644
--- a/tests/basics/string_splitlines.py
+++ b/tests/basics/string_splitlines.py
@@ -3,9 +3,8 @@
try:
str.splitlines
except:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# test \n as newline
print("foo\nbar".splitlines())
diff --git a/tests/basics/struct1.py b/tests/basics/struct1.py
index bb6877c78..a442beb1e 100644
--- a/tests/basics/struct1.py
+++ b/tests/basics/struct1.py
@@ -4,9 +4,8 @@ except:
try:
import struct
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(struct.calcsize("<bI"))
print(struct.unpack("<bI", b"\x80\0\0\x01\0"))
diff --git a/tests/basics/struct1_intbig.py b/tests/basics/struct1_intbig.py
index 7f4c3ce12..b1fec527e 100644
--- a/tests/basics/struct1_intbig.py
+++ b/tests/basics/struct1_intbig.py
@@ -4,9 +4,8 @@ except:
try:
import struct
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
# check maximum pack on 32-bit machine
print(struct.pack("<I", 2**32 - 1))
diff --git a/tests/basics/struct2.py b/tests/basics/struct2.py
index e3f8bbebf..d8234d0d3 100644
--- a/tests/basics/struct2.py
+++ b/tests/basics/struct2.py
@@ -6,9 +6,8 @@ except:
try:
import struct
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
print(struct.calcsize('0s'))
print(struct.unpack('0s', b''))
diff --git a/tests/basics/struct_micropython.py b/tests/basics/struct_micropython.py
index 53306dad6..4b9dfe137 100644
--- a/tests/basics/struct_micropython.py
+++ b/tests/basics/struct_micropython.py
@@ -6,9 +6,8 @@ except:
try:
import struct
except ImportError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
class A():
pass
diff --git a/tests/basics/subclass_classmethod.py b/tests/basics/subclass_classmethod.py
index 48f164b36..00a2ebd7c 100644
--- a/tests/basics/subclass_classmethod.py
+++ b/tests/basics/subclass_classmethod.py
@@ -8,9 +8,8 @@ class Base:
try:
Base.__name__
except AttributeError:
- import sys
print("SKIP")
- sys.exit()
+ raise SystemExit
class Sub(Base):
pass
diff --git a/tests/basics/sys1.py b/tests/basics/sys1.py
index 29ef974d1..0d74a1292 100644
--- a/tests/basics/sys1.py
+++ b/tests/basics/sys1.py
@@ -20,7 +20,7 @@ except AttributeError:
print(True)
try:
- sys.exit()
+ raise SystemExit
except SystemExit as e:
print("SystemExit", e.args)
diff --git a/tests/basics/zip.py b/tests/basics/zip.py
index 958addb7a..66f2544e5 100644
--- a/tests/basics/zip.py
+++ b/tests/basics/zip.py
@@ -3,8 +3,7 @@ try:
set
except NameError:
print("SKIP")
- import sys
- sys.exit()
+ raise SystemExit
print(list(zip()))
print(list(zip([1], set([2, 3]))))