Enable running of the tests from test.netsurf-browser.org

This commit is contained in:
Daniel Silverstone 2019-02-16 14:57:11 +00:00
parent 1698a75282
commit ceefe45205
2 changed files with 80 additions and 2 deletions

71
test/monkey-see-monkey-do Executable file
View File

@ -0,0 +1,71 @@
#!/usr/bin/python3
# If you have any poo, fling it now!
BASE_PATH="https://test.netsurf-browser.org/cgi-bin/monkey-index.cgi"
MONKEY_PATH="./nsmonkey"
# Otherwise let's begin...
import sys
import yaml
import multiprocessing as mp
from urllib import request
from io import StringIO
import monkey_driver as driver
mp.set_start_method('fork')
def child_run_test(parts):
outcapture = StringIO()
errcapture = StringIO()
oldout = sys.stdout
olderr = sys.stderr
sys.stdout = outcapture
sys.stderr = errcapture
try:
driver.run_preloaded_test(MONKEY_PATH, parts)
except:
sys.stdout = oldout
sys.stderr = olderr
print("FAIL:")
print("STDOUT:\n{}\n", outcapture.getvalue())
print("STDERR:\n{}\n", errcapture.getvalue())
print("RERAISE:")
raise
def run_test(parts):
p = mp.Process(target=child_run_test, args=(parts, ))
p.start()
p.join()
return p.exitcode
print("Fetching tests...")
index = request.urlopen(BASE_PATH)
index = index.read()
print("Parsing tests...")
test_set = yaml.load_all(index)
print("Running tests...")
ret = 0
for test in test_set:
if test["kind"] == 'group':
print("Start group: {}".format(test["group"]))
print(" => {}".format(test["description"]))
elif test["kind"] == 'test':
print(" => Run test: {}".format(test["filename"]))
ret = run_test(test["content"])
if ret != 0:
break
if ret != 0:
print("FAIL")
sys.exit(1)
else:
print("PASS")
sys.exit(0)

View File

@ -317,14 +317,21 @@ def walk_test_plan(ctx, plan):
for step in plan["steps"]:
run_test_step(ctx, step)
def run_test_plan(ctx, plan):
print_test_plan_info(ctx, plan)
walk_test_plan(ctx, plan)
def run_preloaded_test(path_monkey, plan):
ctx = {
"monkey": path_monkey,
}
run_test_plan(ctx, plan)
def main(argv):
ctx = {}
path_monkey, path_test = parse_argv(argv)
plan = load_test_plan(path_test)
ctx["monkey"] = path_monkey
print_test_plan_info(ctx, plan)
walk_test_plan(ctx, plan)
# Some python weirdness to get to main().
if __name__ == "__main__":