aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2014-11-24 13:42:39 -0700
committerbors-servo <metajack+bors@gmail.com>2014-11-24 13:42:39 -0700
commit10f8fe00677c756bd69adcf90b96a7e36bae8f56 (patch)
treed0394e648a5ba3a160c3b68e4aac2e2fd44d21b1
parent51aa2fde10daa8c98f5407e35b8abf01bd364788 (diff)
parent8f4f6407d4ec6836a9c3a7ebeebc8c52997b4cff (diff)
downloadservo-10f8fe00677c756bd69adcf90b96a7e36bae8f56.tar.gz
servo-10f8fe00677c756bd69adcf90b96a7e36bae8f56.zip
auto merge of #4090 : mttr/servo/mach_infer_test, r=jdm
Fixes #4086 Lets `./mach test` take a file or directory as an argument, and infers `test-content`, `test-wpt`, or `test-ref` from the file's path. Usage Example: ``` $ ./mach test tests/wpt/web-platform-tests/dom/interfaces.html 0:00.27 LOG: MainThread INFO Using 1 client processes ... ``` Note that while there is no functionality for `test-ref` to accept individual files, `./mach test tests/ref` will still trigger `test-ref`. Passing arguments properly through python would have been ugly (though maybe there are some mach internals I could have taken advantage of), so this instead runs a new mach process and lets the individual test suites manage their arguments like normal.
-rw-r--r--python/servo/testing_commands.py37
1 files changed, 36 insertions, 1 deletions
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index 403423823af..f76d8efb445 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -42,10 +42,45 @@ class MachCommands(CommandBase):
if t:
return subprocess.call([t] + args, env=self.build_env())
+ def infer_test_by_dir(self, params):
+ maybe_path = path.normpath(params[0])
+ mach_command = path.join(self.context.topdir, "mach")
+ args = None
+
+ if not path.exists(maybe_path):
+ print("%s is not a valid file or directory" % maybe_path)
+ return 1
+
+ test_dirs = [
+ (path.join("tests", "content"), "test-content"),
+ (path.join("tests", "wpt"), "test-wpt"),
+ ]
+
+ if path.join("tests", "ref") in maybe_path:
+ # test-ref is the outcast here in that it does not accept
+ # individual files as arguments.
+ args = [mach_command, "test-ref"] + params[1:]
+ else:
+ for test_dir, test_name in test_dirs:
+ if test_dir in maybe_path:
+ args = [mach_command, test_name, maybe_path] + params[1:]
+ break
+ else:
+ print("%s is not a valid test file or directory" % maybe_path)
+ return 1
+
+ return subprocess.call(args, env=self.build_env())
+
@Command('test',
description='Run all Servo tests',
category='testing')
- def test(self):
+ @CommandArgument('params', default=None, nargs="...",
+ help="Optionally select test based on "
+ "test file directory")
+ def test(self, params):
+ if params:
+ return self.infer_test_by_dir(params)
+
test_start = time()
for t in ["tidy", "unit", "ref", "content", "wpt"]:
Registrar.dispatch("test-%s" % t, context=self.context)