diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 4f39c702edd..0f17274bac0 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -271,6 +271,16 @@ class MachCommands(CommandBase): def test_jquery(self, release, dev): return self.jquery_test_runner("test", release, dev) + @Command('test-dromaeo', + description='Run the Dromaeo test suite', + category='testing') + @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) + @Command('update-jquery', description='Update the jQuery test suite expected results', category='testing') @@ -367,3 +377,29 @@ class MachCommands(CommandBase): return subprocess.check_call( [run_file, cmd, bin_path, base_dir]) + + def dromaeo_test_runner(self, cmd, release, dev): + self.ensure_bootstrapped() + base_dir = path.abspath(path.join("tests", "dromaeo")) + dromaeo_dir = path.join(base_dir, "dromaeo") + run_file = path.join(base_dir, "run_dromaeo.py") + + # Clone the Dromaeo repository if it doesn't exist + if not os.path.isdir(dromaeo_dir): + subprocess.check_call( + ["git", "clone", "-b", "servo", "--depth", "1", "https://github.com/notriddle/dromaeo", dromaeo_dir]) + + # Run pull in case the Dromaeo repo was updated since last test run + subprocess.check_call( + ["git", "-C", dromaeo_dir, "pull"]) + + # Compile test suite + subprocess.check_call( + ["make", "-C", dromaeo_dir, "web"]) + + # Check that a release servo build exists + bin_path = path.abspath(self.get_binary_path(release, dev)) + + return subprocess.check_call( + [run_file, cmd, bin_path, base_dir]) + diff --git a/tests/dromaeo/run_dromaeo.py b/tests/dromaeo/run_dromaeo.py index 1765cb6d18f..3e82014a8f4 100755 --- a/tests/dromaeo/run_dromaeo.py +++ b/tests/dromaeo/run_dromaeo.py @@ -19,7 +19,7 @@ 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}/?recommended&automated&post_json".format(TEST_SERVER_PORT) + url = "http://localhost:{0}/dromaeo/web/?recommended&automated&post_json".format(TEST_SERVER_PORT) #args = [servo_exe, url, "-z", "-f"] args = [servo_exe, url, "-z"] return subprocess.Popen(args)