#! /usr/bin/env python3import osimport subprocessimport sysimport argparseimport refrom glob import globfrom collections import defaultdict# Tests require at least CPython 3.3. If your default python3 executable# is of lower version, you can point MICROPY_CPYTHON3 environment var# to the correct executable.if os.name == "nt":CPYTHON3 = os.getenv("MICROPY_CPYTHON3", "python3.exe")MICROPYTHON = os.getenv("MICROPY_MICROPYTHON", "../ports/windows/micropython.exe")else:CPYTHON3 = os.getenv("MICROPY_CPYTHON3", "python3")MICROPYTHON = os.getenv("MICROPY_MICROPYTHON", "../ports/unix/micropython")def run_tests(pyb, test_dict):test_count = 0testcase_count = 0for base_test, tests in sorted(test_dict.items()):print(base_test + ":")for test_file in tests:# run MicroPythonif pyb is None:# run on PCtry:output_mupy = subprocess.check_output([MICROPYTHON, "-X", "emit=bytecode", test_file[0]])except subprocess.CalledProcessError:output_mupy = b"CRASH"else:# run on pyboardpyb.enter_raw_repl()try:output_mupy = pyb.execfile(test_file).replace(b"\r\n", b"\n")except pyboard.PyboardError:output_mupy = b"CRASH"output_mupy = float(output_mupy.strip())test_file[1] = output_mupytestcase_count += 1test_count += 1baseline = Nonefor t in tests:if baseline is None:baseline = t[1]print(" %.3fs (%+06.2f%%) %s" % (t[1], (t[1] * 100 / baseline) - 100, t[0]))print("{} tests performed ({} individual testcases)".format(test_count, testcase_count))# all tests succeededreturn Truedef main():cmd_parser = argparse.ArgumentParser(description="Run tests for MicroPython.")cmd_parser.add_argument("--pyboard", action="store_true", help="run the tests on the pyboard")cmd_parser.add_argument("files", nargs="*", help="input test files")args = cmd_parser.parse_args()# Note pyboard support is copied over from run-tests, not testes, and likely needs revampingif args.pyboard:import pyboardpyb = pyboard.Pyboard("/dev/ttyACM0")pyb.enter_raw_repl()else:pyb = Noneif len(args.files) == 0:if pyb is None:# run PC teststest_dirs = ("internal_bench",)else:# run pyboard teststest_dirs = ("basics", "float", "pyb")tests = sorted(test_filefor test_files in (glob("{}/*.py".format(dir)) for dir in test_dirs)for test_file in test_files)else:# tests explicitly giventests = sorted(args.files)test_dict = defaultdict(lambda: [])for t in tests:m = re.match(r"(.+?)-(.+)\.py", t)if not m:continuetest_dict[m.group(1)].append([t, None])if not run_tests(pyb, test_dict):sys.exit(1)if __name__ == "__main__":main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。