diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 0f17274bac0..2b53f8f46e9 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -274,12 +274,14 @@ class MachCommands(CommandBase): @Command('test-dromaeo', description='Run the Dromaeo test suite', category='testing') + @CommandArgument('tests', default=["recommended"], nargs="...", + help="Specific tests to run") @CommandArgument('--release', '-r', action='store_true', help='Run the release build') @CommandArgument('--dev', '-d', action='store_true', help='Run the dev build') - def test_dromaeo(self, release, dev): - return self.dromaeo_test_runner("test", release, dev) + def test_dromaeo(self, tests, release, dev): + return self.dromaeo_test_runner(tests, release, dev) @Command('update-jquery', description='Update the jQuery test suite expected results', @@ -378,7 +380,7 @@ class MachCommands(CommandBase): return subprocess.check_call( [run_file, cmd, bin_path, base_dir]) - def dromaeo_test_runner(self, cmd, release, dev): + def dromaeo_test_runner(self, tests, release, dev): self.ensure_bootstrapped() base_dir = path.abspath(path.join("tests", "dromaeo")) dromaeo_dir = path.join(base_dir, "dromaeo") @@ -401,5 +403,5 @@ class MachCommands(CommandBase): bin_path = path.abspath(self.get_binary_path(release, dev)) return subprocess.check_call( - [run_file, cmd, bin_path, base_dir]) + [run_file, "|".join(tests), bin_path, base_dir]) diff --git a/tests/dromaeo/run_dromaeo.py b/tests/dromaeo/run_dromaeo.py index c00f6c2c195..22c459ffd37 100755 --- a/tests/dromaeo/run_dromaeo.py +++ b/tests/dromaeo/run_dromaeo.py @@ -13,20 +13,20 @@ import SimpleHTTPServer import SocketServer import threading import urlparse +import json # Port to run the HTTP server on for Dromaeo. TEST_SERVER_PORT = 8192 -# Run servo and print / parse the results for a specific jQuery test module. -def run_servo(servo_exe): - url = "http://localhost:{0}/dromaeo/web/?recommended&automated&post_json".format(TEST_SERVER_PORT) - #url = "http://localhost:{0}/dromaeo/web/?sunspider-string-validate-input&automated&post_json".format(TEST_SERVER_PORT) +# Run servo and print / parse the results for a specific Dromaeo module. +def run_servo(servo_exe, tests): + url = "http://localhost:{0}/dromaeo/web/?{1}&automated&post_json".format(TEST_SERVER_PORT, tests) args = [servo_exe, url, "-z", "-f"] return subprocess.Popen(args) # Print usage if command line args are incorrect def print_usage(): - print("USAGE: {0} test servo_binary dromaeo_base_dir".format(sys.argv[0])) + print("USAGE: {0} tests servo_binary dromaeo_base_dir".format(sys.argv[0])) # Handle the POST at the end @@ -44,7 +44,7 @@ class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): if __name__ == '__main__': if len(sys.argv) == 4: - cmd = sys.argv[1] + tests = sys.argv[1] servo_exe = sys.argv[2] base_dir = sys.argv[3] os.chdir(base_dir) @@ -57,15 +57,21 @@ if __name__ == '__main__': # Start the test server server = BaseHTTPServer.HTTPServer(('', TEST_SERVER_PORT), RequestHandler) - if cmd == "test": - print("Testing Dromaeo on Servo!") - proc = run_servo(servo_exe) - server.got_post = False - while not server.got_post: - server.handle_request() - print("dromaeo: %s" % server.post_data) - proc.kill() - else: - print_usage() + print("Testing Dromaeo on Servo!") + proc = run_servo(servo_exe, tests) + server.got_post = False + while not server.got_post: + server.handle_request() + data = json.loads(server.post_data[0]) + n = 0 + l = 0 + for test in data: + n = max(n, len(test) + len(data[test]) + 3) + l = max(l, len(test)) + print("\n Test{0} | Time".format(" " * (l - len("Test")))) + print("-" * (n+2)) + for test in data: + print(" {0}{1} | {2}".format(test, " " * (l - len(test)), data[test])) + proc.kill() else: print_usage()