Allow reftest to take 0 or more testname arguments

This commit is contained in:
Matt Brubeck 2015-10-01 08:53:42 -07:00
parent e2048d57c4
commit 0c6bb6125c

25
tests/reftest.rs vendored
View file

@ -48,11 +48,10 @@ fn main() {
let harness_args = parts.next().unwrap(); // .split() is never empty let harness_args = parts.next().unwrap(); // .split() is never empty
let servo_args = parts.next().unwrap_or(&[]); let servo_args = parts.next().unwrap_or(&[]);
let (render_mode_string, base_path, testname) = match harness_args { let (render_mode_string, base_path, testnames) = match harness_args {
[] | [_] => panic!("USAGE: cpu|gpu base_path [testname regex]"), [ref render_mode_string, ref base_path, testnames..] =>
[ref render_mode_string, ref base_path] => (render_mode_string, base_path, None), (render_mode_string, base_path, testnames),
[ref render_mode_string, ref base_path, ref testname, ..] => _ => panic!("USAGE: cpu|gpu base_path [testname ...]"),
(render_mode_string, base_path, Some(testname.clone())),
}; };
let mut render_mode = match &**render_mode_string { let mut render_mode = match &**render_mode_string {
@ -79,7 +78,8 @@ fn main() {
match maybe_extension { match maybe_extension {
Some(extension) => { Some(extension) => {
if extension == OsStr::new("list") && file.is_file() { 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()); println!("\t{} [{} tests]", file.display(), tests.len());
all_tests.append(&mut tests); all_tests.append(&mut tests);
} }
@ -89,7 +89,7 @@ fn main() {
} }
let test_opts = TestOpts { let test_opts = TestOpts {
filter: testname, filter: None,
run_ignored: false, run_ignored: false,
logfile: None, logfile: None,
run_tests: true, run_tests: true,
@ -165,7 +165,12 @@ struct TestLine<'a> {
file_right: &'a str, 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 mut tests = Vec::new();
let contents = { let contents = {
let mut f = File::open(file).unwrap(); 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, 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 tests
} }