mirror of
https://github.com/denoland/deno
synced 2024-11-05 18:45:24 +00:00
Add tools/test.py test runner. (#384)
This commit is contained in:
parent
709b0cb90c
commit
dff5c16e85
9 changed files with 90 additions and 12 deletions
|
@ -47,9 +47,4 @@ install:
|
|||
- ninja -j2 -C $BUILD_PATH :all
|
||||
script:
|
||||
- ./tools/lint.py
|
||||
- $BUILD_PATH/test_cc
|
||||
- $BUILD_PATH/handlers_test
|
||||
- $BUILD_PATH/deno ./testdata/001_hello.js
|
||||
- $BUILD_PATH/deno ./testdata/002_hello.ts
|
||||
- $BUILD_PATH/deno_ns ./testdata/001_hello.js
|
||||
- $BUILD_PATH/deno_ns ./testdata/002_hello.ts
|
||||
- ./tools/test.py $BUILD_PATH
|
||||
|
|
|
@ -15,8 +15,6 @@
|
|||
namespace deno {
|
||||
|
||||
Deno* NewFromFileSystem(void* data, deno_recv_cb cb) {
|
||||
printf("load bundle " BUNDLE_LOCATION "\n");
|
||||
|
||||
std::string js_source;
|
||||
CHECK(deno::ReadFileToString(BUNDLE_LOCATION, &js_source));
|
||||
|
||||
|
|
1
tests/001_hello.js.out
Normal file
1
tests/001_hello.js.out
Normal file
|
@ -0,0 +1 @@
|
|||
Hello World
|
1
tests/002_hello.ts.out
Normal file
1
tests/002_hello.ts.out
Normal file
|
@ -0,0 +1 @@
|
|||
Hello World
|
41
tools/check_output_test.py
Executable file
41
tools/check_output_test.py
Executable file
|
@ -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))
|
41
tools/test.py
Executable file
41
tools/test.py
Executable file
|
@ -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))
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue