aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/servo/testing_commands.py26
-rw-r--r--tests/reftest.rs25
2 files changed, 29 insertions, 22 deletions
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index e4c36236bd0..f6159406666 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -83,7 +83,7 @@ class MachCommands(CommandBase):
("tidy", {}),
("ref", {"kwargs": {"kind": render_mode},
"paths": [path.abspath(path.join("tests", "ref"))],
- "include_arg": "name"}),
+ "include_arg": "include"}),
("wpt", {"kwargs": {"release": release},
"paths": [path.abspath(path.join("tests", "wpt", "web-platform-tests")),
path.abspath(path.join("tests", "wpt", "mozilla"))],
@@ -189,14 +189,14 @@ class MachCommands(CommandBase):
help=HELP_RENDER_MODE)
@CommandArgument('--release', '-r', action='store_true',
help='Run with a release build of Servo')
- @CommandArgument('--name', default=None,
+ @CommandArgument('--include', default=None, nargs='+',
help="Only run tests that match this pattern. If the "
"path to the ref test directory is included, it "
"will automatically be trimmed out.")
@CommandArgument(
'servo_params', default=None, nargs=argparse.REMAINDER,
help="Command-line arguments to be passed through to Servo")
- def test_ref(self, kind=DEFAULT_RENDER_MODE, name=None, servo_params=None,
+ def test_ref(self, kind=DEFAULT_RENDER_MODE, include=None, servo_params=None,
release=False):
self.ensure_bootstrapped()
self.ensure_built_tests(release=release)
@@ -210,17 +210,17 @@ class MachCommands(CommandBase):
for k in kinds:
print("Running %s reftests..." % k)
test_args = [k, test_path]
- if name is not None:
- maybe_path = path.normpath(name)
+ if include is not None:
ref_path = path.join("tests", "ref")
-
- # Check to see if we were passed something leading with the
- # path to the ref test directory, and trim it so that reftest
- # knows how to filter it.
- if ref_path in maybe_path:
- test_args.append(path.relpath(maybe_path, ref_path))
- else:
- test_args.append(name)
+ for name in include:
+ # Check to see if we were passed something leading with the
+ # path to the ref test directory, and trim it so that reftest
+ # knows how to filter it.
+ maybe_path = path.normpath(name)
+ if ref_path in maybe_path:
+ test_args.append(path.relpath(maybe_path, ref_path))
+ else:
+ test_args.append(name)
if servo_params is not None:
test_args += ["--"] + servo_params
ret = self.run_test("reftest", test_args, release=release)
diff --git a/tests/reftest.rs b/tests/reftest.rs
index b055f09580d..b3df1abb08c 100644
--- a/tests/reftest.rs
+++ b/tests/reftest.rs
@@ -48,11 +48,10 @@ fn main() {
let harness_args = parts.next().unwrap(); // .split() is never empty
let servo_args = parts.next().unwrap_or(&[]);
- let (render_mode_string, base_path, testname) = match harness_args {
- [] | [_] => panic!("USAGE: cpu|gpu base_path [testname regex]"),
- [ref render_mode_string, ref base_path] => (render_mode_string, base_path, None),
- [ref render_mode_string, ref base_path, ref testname, ..] =>
- (render_mode_string, base_path, Some(testname.clone())),
+ let (render_mode_string, base_path, testnames) = match harness_args {
+ [ref render_mode_string, ref base_path, testnames..] =>
+ (render_mode_string, base_path, testnames),
+ _ => panic!("USAGE: cpu|gpu base_path [testname ...]"),
};
let mut render_mode = match &**render_mode_string {
@@ -79,7 +78,8 @@ fn main() {
match maybe_extension {
Some(extension) => {
if extension == OsStr::new("list") && file.is_file() {
- let mut tests = parse_lists(&file, servo_args, render_mode, all_tests.len());
+ let len = all_tests.len();
+ let mut tests = parse_lists(&file, testnames, servo_args, render_mode, len);
println!("\t{} [{} tests]", file.display(), tests.len());
all_tests.append(&mut tests);
}
@@ -89,7 +89,7 @@ fn main() {
}
let test_opts = TestOpts {
- filter: testname,
+ filter: None,
run_ignored: false,
logfile: None,
run_tests: true,
@@ -165,7 +165,12 @@ struct TestLine<'a> {
file_right: &'a str,
}
-fn parse_lists(file: &Path, servo_args: &[String], render_mode: RenderMode, id_offset: usize) -> Vec<TestDescAndFn> {
+fn parse_lists(file: &Path,
+ filters: &[String],
+ servo_args: &[String],
+ render_mode: RenderMode,
+ id_offset: usize)
+ -> Vec<TestDescAndFn> {
let mut tests = Vec::new();
let contents = {
let mut f = File::open(file).unwrap();
@@ -254,7 +259,9 @@ fn parse_lists(file: &Path, servo_args: &[String], render_mode: RenderMode, id_o
pixel_ratio: pixel_ratio,
};
- tests.push(make_test(reftest));
+ if filters.is_empty() || filters.iter().any(|pattern| reftest.name.contains(pattern)) {
+ tests.push(make_test(reftest));
+ }
}
tests
}