reftest: Allow passing Servo args after --

This commit is contained in:
Keegan McAllister 2014-03-03 18:03:02 -08:00
parent cfc264d981
commit 9a4ac45061

View file

@ -22,13 +22,16 @@ use extra::test::run_tests_console;
fn main() {
let args = os::args();
if args.len() < 2 {
println("error: at least one reftest list must be given");
os::set_exit_status(1);
return;
let mut parts = args.tail().split(|e| "--" == e.as_slice());
let files = parts.next().unwrap(); // .split() is never empty
let servo_args = parts.next().unwrap_or(&[]);
if files.len() == 0 {
fail!("error: at least one reftest list must be given");
}
let tests = parse_lists(args.tail());
let tests = parse_lists(files, servo_args);
let test_opts = TestOpts {
filter: None,
run_ignored: false,
@ -57,9 +60,10 @@ struct Reftest {
kind: ReftestKind,
files: [~str, ..2],
id: uint,
servo_args: ~[~str],
}
fn parse_lists(filenames: &[~str]) -> ~[TestDescAndFn] {
fn parse_lists(filenames: &[~str], servo_args: &[~str]) -> ~[TestDescAndFn] {
let mut tests: ~[TestDescAndFn] = ~[];
let mut next_id = 0;
for file in filenames.iter() {
@ -97,6 +101,7 @@ fn parse_lists(filenames: &[~str]) -> ~[TestDescAndFn] {
kind: kind,
files: [file_left, file_right],
id: next_id,
servo_args: servo_args.to_owned(),
};
next_id += 1;
@ -123,7 +128,9 @@ fn make_test(reftest: Reftest) -> TestDescAndFn {
fn capture(reftest: &Reftest, side: uint) -> png::Image {
let filename = format!("/tmp/servo-reftest-{:06u}-{:u}.png", reftest.id, side);
let args = ~[~"-f", ~"-o", filename.clone(), reftest.files[side].clone()];
let mut args = reftest.servo_args.clone();
args.push_all_move(~[~"-f", ~"-o", filename.clone(), reftest.files[side].clone()]);
let mut process = Process::new("./servo", args, ProcessOptions::new()).unwrap();
let retval = process.finish();
assert!(retval == ExitStatus(0));