diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2018-07-21 19:08:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-21 19:08:24 -0400 |
commit | dff5c16e85b9ee7e610d17792f8c301af1a9c458 (patch) | |
tree | cdb3a7ab2c6e4a1d422776873bea95774ffbe806 /tools | |
parent | 709b0cb90cec938cbfd3d49ed1c35fa949bda36a (diff) |
Add tools/test.py test runner. (#384)
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/check_output_test.py | 41 | ||||
-rwxr-xr-x | tools/test.py | 41 | ||||
-rw-r--r-- | tools/util.py | 9 |
3 files changed, 87 insertions, 4 deletions
diff --git a/tools/check_output_test.py b/tools/check_output_test.py new file mode 100755 index 000000000..c8b01952d --- /dev/null +++ b/tools/check_output_test.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# Given a deno executable, this script execute several integration tests +# with it. The tests are stored in //tests/ and each script has a corresponding +# .out file which specifies what the stdout should be. +# +# Usage: check_output_test.py [path to deno executable] +import os +import sys +import subprocess + +root_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) +tests_path = os.path.join(root_path, "tests") + + +def check_output_test(deno_exe_filename): + assert os.path.isfile(deno_exe_filename) + outs = [ + filename for filename in os.listdir(tests_path) + if filename.endswith(".out") + ] + assert len(outs) > 1 + tests = [(os.path.splitext(filename)[0], filename) for filename in outs] + for (script, out_filename) in tests: + script_abs = os.path.join(tests_path, script) + out_abs = os.path.join(tests_path, out_filename) + with open(out_abs, 'r') as f: + expected_out = f.read() + cmd = [deno_exe_filename, script_abs] + print " ".join(cmd) + actual_out = subprocess.check_output(cmd) + if expected_out != actual_out: + print "Expected output does not match actual." + sys.exit(1) + + +def main(argv): + check_output_test(argv[1]) + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/tools/test.py b/tools/test.py new file mode 100755 index 000000000..e62efd0f6 --- /dev/null +++ b/tools/test.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# Runs the full test suite. +# Usage: ./tools/test.py out/Debug +import os +import sys +from check_output_test import check_output_test +from util import executable_suffix, run + + +def check_exists(filename): + if not os.path.exists(filename): + print "Required target doesn't exist:", filename + print "Build target :all" + sys.exit(1) + + +def main(argv): + if len(argv) != 2: + print "Usage: tools/test.py [build dir]" + sys.exit(1) + build_dir = argv[1] + + test_cc = os.path.join(build_dir, "test_cc" + executable_suffix) + check_exists(test_cc) + run([test_cc]) + + handlers_test = os.path.join(build_dir, "handlers_test" + executable_suffix) + check_exists(handlers_test) + run([handlers_test]) + + deno_exe = os.path.join(build_dir, "deno" + executable_suffix) + check_exists(deno_exe) + check_output_test(deno_exe) + + deno_ns_exe = os.path.join(build_dir, "deno_ns" + executable_suffix) + check_exists(deno_ns_exe) + check_output_test(deno_ns_exe) + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/tools/util.py b/tools/util.py index 8a65f2ede..4141396df 100644 --- a/tools/util.py +++ b/tools/util.py @@ -3,6 +3,8 @@ import os import subprocess +executable_suffix = ".exe" if os.name == "nt" else "" + def run(args, quiet=False, envs={}): if not quiet: @@ -10,10 +12,9 @@ def run(args, quiet=False, envs={}): env = os.environ.copy() for key in envs.keys(): env[key] = envs[key] - if os.name == "nt": - # Run through shell to make .bat/.cmd files work. - args = ["cmd", "/c"] + args - subprocess.check_call(args, env=env) + args[0] = os.path.normpath(args[0]) + shell = os.name == "nt" # Run through shell to make .bat/.cmd files work. + subprocess.check_call(args, env=env, shell=shell) def remove_and_symlink(target, name, target_is_dir=False): |