aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo')
-rw-r--r--python/servo/command_base.py38
-rw-r--r--python/servo/post_build_commands.py38
-rw-r--r--python/servo/testing_commands.py41
3 files changed, 79 insertions, 38 deletions
diff --git a/python/servo/command_base.py b/python/servo/command_base.py
index 185b716165d..80811e30a04 100644
--- a/python/servo/command_base.py
+++ b/python/servo/command_base.py
@@ -121,6 +121,44 @@ class CommandBase(object):
self._cargo_build_id = open(filename).read().strip()
return self._cargo_build_id
+ def get_binary_path(self, release, dev):
+ base_path = path.join("components", "servo", "target")
+ release_path = path.join(base_path, "release", "servo")
+ dev_path = path.join(base_path, "debug", "servo")
+
+ # Prefer release if both given
+ if release and dev:
+ dev = False
+
+ release_exists = path.exists(release_path)
+ dev_exists = path.exists(dev_path)
+
+ if not release_exists and not dev_exists:
+ print("No Servo binary found. Please run './mach build' and try again.")
+ sys.exit()
+
+ if release and release_exists:
+ return release_path
+
+ if dev and dev_exists:
+ return dev_path
+
+ if not dev and not release and release_exists and dev_exists:
+ print("You have multiple profiles built. Please specify which "
+ "one to run with '--release' or '--dev'.")
+ sys.exit()
+
+ if not dev and not release:
+ if release_exists:
+ return release_path
+ else:
+ return dev_path
+
+ print("The %s profile is not built. Please run './mach build%s' "
+ "and try again." % ("release" if release else "dev",
+ " --release" if release else ""))
+ sys.exit()
+
def build_env(self, gonk=False, hosts_file_path=None):
"""Return an extended environment dictionary."""
env = os.environ.copy()
diff --git a/python/servo/post_build_commands.py b/python/servo/post_build_commands.py
index 0dae99e0a87..f6c4c015ba1 100644
--- a/python/servo/post_build_commands.py
+++ b/python/servo/post_build_commands.py
@@ -27,44 +27,6 @@ def read_file(filename, if_exists=False):
@CommandProvider
class MachCommands(CommandBase):
- def get_binary_path(self, release, dev):
- base_path = path.join("components", "servo", "target")
- release_path = path.join(base_path, "release", "servo")
- dev_path = path.join(base_path, "debug", "servo")
-
- # Prefer release if both given
- if release and dev:
- dev = False
-
- release_exists = path.exists(release_path)
- dev_exists = path.exists(dev_path)
-
- if not release_exists and not dev_exists:
- print("No Servo binary found. Please run './mach build' and try again.")
- sys.exit()
-
- if release and release_exists:
- return release_path
-
- if dev and dev_exists:
- return dev_path
-
- if not dev and not release and release_exists and dev_exists:
- print("You have multiple profiles built. Please specify which "
- "one to run with '--release' or '--dev'.")
- sys.exit()
-
- if not dev and not release:
- if release_exists:
- return release_path
- else:
- return dev_path
-
- print("The %s profile is not built. Please run './mach build%s' "
- "and try again." % ("release" if release else "dev",
- " --release" if release else ""))
- sys.exit()
-
@Command('run',
description='Run Servo',
category='post-build')
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index 81361b0081f..44220022db4 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -225,6 +225,26 @@ class MachCommands(CommandBase):
execfile(run_file, run_globals)
return run_globals["update_tests"](**kwargs)
+ @Command('test-jquery',
+ description='Run the jQuery 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_jquery(self, release, dev):
+ return self.jquery_test_runner("test", release, dev)
+
+ @Command('update-jquery',
+ description='Update the jQuery test suite expected results',
+ 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 update_jquery(self):
+ return self.jquery_test_runner("update", release, dev)
+
@Command('test-css',
description='Run the web platform tests',
category='testing',
@@ -291,3 +311,24 @@ class MachCommands(CommandBase):
return default
return path
+
+ def jquery_test_runner(self, cmd, release, dev):
+ self.ensure_bootstrapped()
+ base_dir = path.abspath(path.join("tests", "jquery"))
+ jquery_dir = path.join(base_dir, "jquery")
+ run_file = path.join(base_dir, "run_jquery.py")
+
+ # Clone the jQuery repository if it doesn't exist
+ if not os.path.isdir(jquery_dir):
+ subprocess.check_call(
+ ["git", "clone", "-b", "servo", "--depth", "1", "https://github.com/servo/jquery", jquery_dir])
+
+ # Run pull in case the jQuery repo was updated since last test run
+ subprocess.check_call(
+ ["git", "-C", jquery_dir, "pull"])
+
+ # 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])