summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cmdline/cmd_showbc.py.exp14
-rw-r--r--tests/extmod/ure1.py5
-rw-r--r--tests/float/complex1.py1
-rw-r--r--tests/float/float1.py1
-rw-r--r--tests/float/math_domain.py51
-rw-r--r--tests/float/math_domain_special.py36
-rw-r--r--tests/micropython/viper_binop_divmod.py18
-rw-r--r--tests/micropython/viper_binop_divmod.py.exp28
-rw-r--r--tests/net_inet/test_tls_sites.py5
-rw-r--r--tests/net_inet/test_tls_sites.py.exp1
-rwxr-xr-xtests/run-tests9
-rw-r--r--tests/unix/extra_coverage.py.exp4
12 files changed, 160 insertions, 13 deletions
diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp
index 09fbff6fa..1274cda00 100644
--- a/tests/cmdline/cmd_showbc.py.exp
+++ b/tests/cmdline/cmd_showbc.py.exp
@@ -43,9 +43,9 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
bc=\\d\+ line=126
00 LOAD_CONST_NONE
01 LOAD_CONST_FALSE
-02 BINARY_OP 28 __add__
+02 BINARY_OP 26 __add__
03 LOAD_CONST_TRUE
-04 BINARY_OP 28 __add__
+04 BINARY_OP 26 __add__
05 STORE_FAST 0
06 LOAD_CONST_SMALL_INT 0
07 STORE_FAST 0
@@ -84,7 +84,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
\\d\+ STORE_FAST 7
\\d\+ LOAD_FAST 0
\\d\+ LOAD_DEREF 14
-\\d\+ BINARY_OP 28 __add__
+\\d\+ BINARY_OP 26 __add__
\\d\+ STORE_FAST 8
\\d\+ LOAD_FAST 0
\\d\+ UNARY_OP 1
@@ -132,7 +132,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
\\d\+ DUP_TOP_TWO
\\d\+ LOAD_SUBSCR
\\d\+ LOAD_FAST 12
-\\d\+ BINARY_OP 16 __iadd__
+\\d\+ BINARY_OP 14 __iadd__
\\d\+ ROT_THREE
\\d\+ STORE_SUBSCR
\\d\+ LOAD_DEREF 14
@@ -369,7 +369,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
42 STORE_FAST_N 19
44 LOAD_FAST 9
45 LOAD_FAST_N 19
-47 BINARY_OP 28 __add__
+47 BINARY_OP 26 __add__
48 POP_TOP
49 LOAD_CONST_NONE
50 RETURN_VALUE
@@ -521,7 +521,7 @@ arg names: *
bc=\\d\+ line=113
00 LOAD_DEREF 0
02 LOAD_CONST_SMALL_INT 1
-03 BINARY_OP 28 __add__
+03 BINARY_OP 26 __add__
04 STORE_FAST 1
05 LOAD_CONST_SMALL_INT 1
06 STORE_DEREF 0
@@ -540,7 +540,7 @@ arg names: * b
bc=\\d\+ line=139
00 LOAD_FAST 1
01 LOAD_DEREF 0
-03 BINARY_OP 28 __add__
+03 BINARY_OP 26 __add__
04 RETURN_VALUE
mem: total=\\d\+, current=\\d\+, peak=\\d\+
stack: \\d\+ out of \\d\+
diff --git a/tests/extmod/ure1.py b/tests/extmod/ure1.py
index 6075990fc..54471ed4f 100644
--- a/tests/extmod/ure1.py
+++ b/tests/extmod/ure1.py
@@ -48,7 +48,12 @@ m = r.match("d")
print(m.group(0))
m = r.match("A")
print(m.group(0))
+print("===")
+# '-' character within character class block
+print(re.match("[-a]+", "-a]d").group(0))
+print(re.match("[a-]+", "-a]d").group(0))
+print("===")
r = re.compile("o+")
m = r.search("foobar")
diff --git a/tests/float/complex1.py b/tests/float/complex1.py
index 854410545..479b4b348 100644
--- a/tests/float/complex1.py
+++ b/tests/float/complex1.py
@@ -59,6 +59,7 @@ ans = (-1.2) ** -3.4; print("%.5g %.5g" % (ans.real, ans.imag))
# check printing of inf/nan
print(float('nan') * 1j)
+print(float('-nan') * 1j)
print(float('inf') * (1 + 1j))
print(float('-inf') * (1 + 1j))
diff --git a/tests/float/float1.py b/tests/float/float1.py
index 137dacc23..c64f965a7 100644
--- a/tests/float/float1.py
+++ b/tests/float/float1.py
@@ -21,6 +21,7 @@ print(float("INF"))
print(float("infinity"))
print(float("INFINITY"))
print(float("nan"))
+print(float("-nan"))
print(float("NaN"))
try:
float("")
diff --git a/tests/float/math_domain.py b/tests/float/math_domain.py
new file mode 100644
index 000000000..0cf10fb2a
--- /dev/null
+++ b/tests/float/math_domain.py
@@ -0,0 +1,51 @@
+# Tests domain errors in math functions
+
+try:
+ import math
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+inf = float('inf')
+nan = float('nan')
+
+# single argument functions
+for name, f, args in (
+ ('fabs', math.fabs, ()),
+ ('ceil', math.ceil, ()),
+ ('floor', math.floor, ()),
+ ('trunc', math.trunc, ()),
+ ('sqrt', math.sqrt, (-1, 0)),
+ ('exp', math.exp, ()),
+ ('sin', math.sin, ()),
+ ('cos', math.cos, ()),
+ ('tan', math.tan, ()),
+ ('asin', math.asin, (-1.1, 1, 1.1)),
+ ('acos', math.acos, (-1.1, 1, 1.1)),
+ ('atan', math.atan, ()),
+ ('ldexp', lambda x: math.ldexp(x, 0), ()),
+ ('radians', math.radians, ()),
+ ('degrees', math.degrees, ()),
+ ):
+ for x in args + (inf, nan):
+ try:
+ ans = f(x)
+ print('%.4f' % ans)
+ except ValueError:
+ print(name, 'ValueError')
+ except OverflowError:
+ print(name, 'OverflowError')
+
+# double argument functions
+for name, f, args in (
+ ('pow', math.pow, ((0, 2), (-1, 2), (0, -1), (-1, 2.3))),
+ ('fmod', math.fmod, ((1.2, inf), (1.2, 0), (inf, 1.2))),
+ ('atan2', math.atan2, ((0, 0),)),
+ ('copysign', math.copysign, ()),
+ ):
+ for x in args + ((0, inf), (inf, 0), (inf, inf), (inf, nan), (nan, inf), (nan, nan)):
+ try:
+ ans = f(*x)
+ print('%.4f' % ans)
+ except ValueError:
+ print(name, 'ValueError')
diff --git a/tests/float/math_domain_special.py b/tests/float/math_domain_special.py
new file mode 100644
index 000000000..388920350
--- /dev/null
+++ b/tests/float/math_domain_special.py
@@ -0,0 +1,36 @@
+# Tests domain errors in special math functions
+
+try:
+ import math
+ math.erf
+except (ImportError, AttributeError):
+ print("SKIP")
+ raise SystemExit
+
+inf = float('inf')
+nan = float('nan')
+
+# single argument functions
+for name, f, args in (
+ ('expm1', math.exp, ()),
+ ('log2', math.log2, (-1, 0)),
+ ('log10', math.log10, (-1, 0)),
+ ('sinh', math.sinh, ()),
+ ('cosh', math.cosh, ()),
+ ('tanh', math.tanh, ()),
+ ('asinh', math.asinh, ()),
+ ('acosh', math.acosh, (-1, 0.9, 1)),
+ ('atanh', math.atanh, (-1, 1)),
+ ('erf', math.erf, ()),
+ ('erfc', math.erfc, ()),
+ ('gamma', math.gamma, (-2, -1, 0, 1)),
+ ('lgamma', math.lgamma, (-2, -1, 0, 1)),
+ ):
+ for x in args + (inf, nan):
+ try:
+ ans = f(x)
+ print('%.4f' % ans)
+ except ValueError:
+ print(name, 'ValueError')
+ except OverflowError:
+ print(name, 'OverflowError')
diff --git a/tests/micropython/viper_binop_divmod.py b/tests/micropython/viper_binop_divmod.py
new file mode 100644
index 000000000..822424982
--- /dev/null
+++ b/tests/micropython/viper_binop_divmod.py
@@ -0,0 +1,18 @@
+# test floor-division and modulo operators
+
+@micropython.viper
+def div(x:int, y:int) -> int:
+ return x // y
+
+@micropython.viper
+def mod(x:int, y:int) -> int:
+ return x % y
+
+def dm(x, y):
+ print(div(x, y), mod(x, y))
+
+for x in (-6, 6):
+ for y in range(-7, 8):
+ if y == 0:
+ continue
+ dm(x, y)
diff --git a/tests/micropython/viper_binop_divmod.py.exp b/tests/micropython/viper_binop_divmod.py.exp
new file mode 100644
index 000000000..4fc971d46
--- /dev/null
+++ b/tests/micropython/viper_binop_divmod.py.exp
@@ -0,0 +1,28 @@
+0 -6
+1 0
+1 -1
+1 -2
+2 0
+3 0
+6 0
+-6 0
+-3 0
+-2 0
+-2 2
+-2 4
+-1 0
+-1 1
+-1 -1
+-1 0
+-2 -4
+-2 -2
+-2 0
+-3 0
+-6 0
+6 0
+3 0
+2 0
+1 2
+1 1
+1 0
+0 6
diff --git a/tests/net_inet/test_tls_sites.py b/tests/net_inet/test_tls_sites.py
index 67345fd0b..bf8071d08 100644
--- a/tests/net_inet/test_tls_sites.py
+++ b/tests/net_inet/test_tls_sites.py
@@ -6,6 +6,8 @@ try:
import ussl as ssl
except:
import ssl
+ # CPython only supports server_hostname with SSLContext
+ ssl = ssl.SSLContext()
def test_one(site, opts):
@@ -22,7 +24,7 @@ def test_one(site, opts):
else:
s = ssl.wrap_socket(s)
- s.write(b"GET / HTTP/1.0\r\n\r\n")
+ s.write(b"GET / HTTP/1.0\r\nHost: %s\r\n\r\n" % bytes(site, 'latin'))
resp = s.read(4096)
# print(resp)
@@ -34,6 +36,7 @@ SITES = [
"google.com",
"www.google.com",
"api.telegram.org",
+ {"host": "api.pushbullet.com", "sni": True},
# "w9rybpfril.execute-api.ap-southeast-2.amazonaws.com",
{"host": "w9rybpfril.execute-api.ap-southeast-2.amazonaws.com", "sni": True},
]
diff --git a/tests/net_inet/test_tls_sites.py.exp b/tests/net_inet/test_tls_sites.py.exp
index 12732d1fa..2f3c113d2 100644
--- a/tests/net_inet/test_tls_sites.py.exp
+++ b/tests/net_inet/test_tls_sites.py.exp
@@ -1,4 +1,5 @@
google.com ok
www.google.com ok
api.telegram.org ok
+api.pushbullet.com ok
w9rybpfril.execute-api.ap-southeast-2.amazonaws.com ok
diff --git a/tests/run-tests b/tests/run-tests
index 4024d61df..f1035c435 100755
--- a/tests/run-tests
+++ b/tests/run-tests
@@ -506,9 +506,12 @@ def main():
# we need to access feature_check's from the same directory as the
# run-tests script itself.
base_path = os.path.dirname(sys.argv[0]) or "."
- res = run_tests(pyb, tests, args, base_path)
- if pyb:
- pyb.close()
+ try:
+ res = run_tests(pyb, tests, args, base_path)
+ finally:
+ if pyb:
+ pyb.close()
+
if not res:
sys.exit(1)
diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp
index 4c4f66663..1db46ab8f 100644
--- a/tests/unix/extra_coverage.py.exp
+++ b/tests/unix/extra_coverage.py.exp
@@ -39,8 +39,8 @@ ementation
0
0
# runtime utils
-TypeError: unsupported type for : 'str'
-TypeError: unsupported types for : 'str', 'str'
+TypeError: unsupported type for __abs__: 'str'
+TypeError: unsupported types for __divmod__: 'str', 'str'
Warning: test
# format float
?