diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-02-16 14:57:11 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-02-16 14:57:17 +0000 |
commit | ceefe452052c58ee092da5cdc9c505c3b84f0392 (patch) | |
tree | 1deac13164553873b4041366e76a409bee31222e /test/monkey-see-monkey-do | |
parent | 1698a752827858125e3e4626168cdaa29f13d6d3 (diff) | |
download | netsurf-ceefe452052c58ee092da5cdc9c505c3b84f0392.tar.gz netsurf-ceefe452052c58ee092da5cdc9c505c3b84f0392.tar.bz2 |
Enable running of the tests from test.netsurf-browser.org
Diffstat (limited to 'test/monkey-see-monkey-do')
-rwxr-xr-x | test/monkey-see-monkey-do | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/test/monkey-see-monkey-do b/test/monkey-see-monkey-do new file mode 100755 index 000000000..2733e6f4a --- /dev/null +++ b/test/monkey-see-monkey-do @@ -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) |