Commit 8459f538 authored by Damien George's avatar Damien George

tests/feature_check: Check for lack of pass result rather than failure.

Commit cb68a574 broke automatic Python
feature detection when running tests, because some detection relied on a
crash of a feature script returning exactly b"CRASH".

This commit fixes this and improves the situation by testing for the lack
of a known pass result, rather than an exact failure result.
Signed-off-by: default avatarDamien George <damien@micropython.org>
parent 7f366a21
# check if async/await keywords are supported # check if async/await keywords are supported
async def foo(): async def foo():
await 1 await 1
print("async")
x = const(1) x = const(1)
print(x)
...@@ -2,3 +2,7 @@ ...@@ -2,3 +2,7 @@
@micropython.native @micropython.native
def f(): def f():
pass pass
f()
print("native")
# check if set literal syntax is supported # check if set literal syntax is supported
{1} print({1})
...@@ -279,7 +279,7 @@ def run_tests(pyb, tests, args, result_dir): ...@@ -279,7 +279,7 @@ def run_tests(pyb, tests, args, result_dir):
# Check if micropython.native is supported, and skip such tests if it's not # Check if micropython.native is supported, and skip such tests if it's not
output = run_feature_check(pyb, args, base_path, "native_check.py") output = run_feature_check(pyb, args, base_path, "native_check.py")
if output == b"CRASH": if output != b"native\n":
skip_native = True skip_native = True
# Check if arbitrary-precision integers are supported, and skip such tests if it's not # Check if arbitrary-precision integers are supported, and skip such tests if it's not
...@@ -294,7 +294,7 @@ def run_tests(pyb, tests, args, result_dir): ...@@ -294,7 +294,7 @@ def run_tests(pyb, tests, args, result_dir):
# Check if set type (and set literals) is supported, and skip such tests if it's not # Check if set type (and set literals) is supported, and skip such tests if it's not
output = run_feature_check(pyb, args, base_path, "set_check.py") output = run_feature_check(pyb, args, base_path, "set_check.py")
if output == b"CRASH": if output != b"{1}\n":
skip_set_type = True skip_set_type = True
# Check if slice is supported, and skip such tests if it's not # Check if slice is supported, and skip such tests if it's not
...@@ -304,12 +304,12 @@ def run_tests(pyb, tests, args, result_dir): ...@@ -304,12 +304,12 @@ def run_tests(pyb, tests, args, result_dir):
# Check if async/await keywords are supported, and skip such tests if it's not # Check if async/await keywords are supported, and skip such tests if it's not
output = run_feature_check(pyb, args, base_path, "async_check.py") output = run_feature_check(pyb, args, base_path, "async_check.py")
if output == b"CRASH": if output != b"async\n":
skip_async = True skip_async = True
# Check if const keyword (MicroPython extension) is supported, and skip such tests if it's not # Check if const keyword (MicroPython extension) is supported, and skip such tests if it's not
output = run_feature_check(pyb, args, base_path, "const.py") output = run_feature_check(pyb, args, base_path, "const.py")
if output == b"CRASH": if output != b"1\n":
skip_const = True skip_const = True
# Check if __rOP__ special methods are supported, and skip such tests if it's not # Check if __rOP__ special methods are supported, and skip such tests if it's not
...@@ -334,10 +334,10 @@ def run_tests(pyb, tests, args, result_dir): ...@@ -334,10 +334,10 @@ def run_tests(pyb, tests, args, result_dir):
upy_byteorder = run_feature_check(pyb, args, base_path, "byteorder.py") upy_byteorder = run_feature_check(pyb, args, base_path, "byteorder.py")
upy_float_precision = run_feature_check(pyb, args, base_path, "float.py") upy_float_precision = run_feature_check(pyb, args, base_path, "float.py")
if upy_float_precision == b"CRASH": try:
upy_float_precision = 0
else:
upy_float_precision = int(upy_float_precision) upy_float_precision = int(upy_float_precision)
except ValueError:
upy_float_precision = 0
has_complex = run_feature_check(pyb, args, base_path, "complex.py") == b"complex\n" has_complex = run_feature_check(pyb, args, base_path, "complex.py") == b"complex\n"
has_coverage = run_feature_check(pyb, args, base_path, "coverage.py") == b"coverage\n" has_coverage = run_feature_check(pyb, args, base_path, "coverage.py") == b"coverage\n"
cpy_byteorder = subprocess.check_output( cpy_byteorder = subprocess.check_output(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment