micropython/tests/run-tests
Damien George 929a675a3d Change test scripts to use python3; bytecode tests use python3.4.
I upgraded to Python 3.4.0, so needed to make these changes.  Hopefully
the tests still run with Python 3.3.x (the scripts use python3 so are
agnostic as to the subversion).

Bytecode tests are tightly coupled to the Python version, and now some
fail against Python 3.4.
2014-04-02 15:31:39 +01:00

62 lines
1.7 KiB
Python
Executable File

#! /usr/bin/env python3
import os
import subprocess
import sys
from glob import glob
if os.name == 'nt':
CPYTHON3 = 'python3.exe'
MP_PY = '../windows/micropython.exe'
else:
CPYTHON3 = 'python3'
MP_PY = '../unix/micropython'
def rm_f(fname):
if os.path.exists(fname):
os.remove(fname)
test_count = 0
testcase_count = 0
passed_count = 0
failed_tests = []
tests = []
if not sys.argv[1:]:
tests = sorted(glob('basics/*.py') + glob('io/*.py') + glob('misc/*.py'))
else:
tests = sys.argv[1:]
for test_file in tests:
test_name = os.path.splitext(os.path.basename(test_file))[0]
output_expected = subprocess.check_output([CPYTHON3, '-B', test_file])
try:
output_mupy = subprocess.check_output([MP_PY, test_file])
except subprocess.CalledProcessError:
output_mupy = b'CRASH'
testcase_count += len(output_expected.splitlines())
if output_expected == output_mupy:
print("pass ", test_file)
passed_count += 1
rm_f(os.path.basename(test_file + ".exp"))
rm_f(os.path.basename(test_file + ".out"))
else:
with open(os.path.basename(test_file + ".exp"), "w") as f:
f.write(str(output_expected, "ascii"))
with open(os.path.basename(test_file + ".out"), "w") as f:
f.write(str(output_mupy, "ascii"))
print("FAIL ", test_file)
failed_tests.append(test_name)
test_count += 1
print("{} tests performed ({} individual testcases)".format(test_count, testcase_count))
print("{} tests passed".format(passed_count))
if len(failed_tests) > 0:
print("{} tests failed: {}".format(len(failed_tests), ' '.join(failed_tests)))
sys.exit(1)