diff options
-rw-r--r-- | src/test/harness/reftest/reftest.rs | 65 |
1 files changed, 19 insertions, 46 deletions
diff --git a/src/test/harness/reftest/reftest.rs b/src/test/harness/reftest/reftest.rs index 6608311642f..2f83cf88583 100644 --- a/src/test/harness/reftest/reftest.rs +++ b/src/test/harness/reftest/reftest.rs @@ -11,11 +11,12 @@ extern mod std; extern mod extra; use std::cell::Cell; -use std::io; +use std::rt::io; +use std::rt::io::file; +use std::rt::io::Reader; use std::os; use std::run; -use extra::digest::Digest; -use extra::sha1::Sha1; +use std::str; use extra::test::{DynTestName, DynTestFn, TestDesc, TestOpts, TestDescAndFn}; use extra::test::run_tests_console; @@ -55,15 +56,17 @@ struct Reftest { kind: ReftestKind, left: ~str, right: ~str, + id: uint, } fn parse_lists(filenames: &[~str]) -> ~[TestDescAndFn] { let mut tests: ~[TestDescAndFn] = ~[]; + let mut next_id = 0; for file in filenames.iter() { let file_path = Path::new(file.clone()); - let contents = match io::read_whole_file_str(&file_path) { - Ok(x) => x, - Err(s) => fail!(s) + let contents = match file::open(&file_path, io::Open, io::Read) { + Some(mut f) => str::from_utf8(f.read_to_end()), + None => fail!("Could not open file") }; for line in contents.line_iter() { @@ -89,8 +92,11 @@ fn parse_lists(filenames: &[~str]) -> ~[TestDescAndFn] { kind: kind, left: file_left, right: file_right, + id: next_id, }; + next_id += 1; + tests.push(make_test(reftest)); } } @@ -113,11 +119,8 @@ fn make_test(reftest: Reftest) -> TestDescAndFn { } fn check_reftest(reftest: Reftest) { - let id = gen_id(&reftest); - let left_filename = format!("/tmp/{:s}-left.png", id); - let right_filename = format!("/tmp/{:s}-right.png", id); - let left_path = Path::new(left_filename.clone()); - let right_path = Path::new(right_filename.clone()); + let left_filename = format!("/tmp/servo-reftest-{:06u}-left.png", reftest.id); + let right_filename = format!("/tmp/servo-reftest-{:06u}-right.png", reftest.id); let args = ~[~"-o", left_filename.clone(), reftest.left.clone()]; let mut process = run::Process::new("./servo", args, run::ProcessOptions::new()); @@ -130,42 +133,12 @@ fn check_reftest(reftest: Reftest) { // assert!(retval == 0); // check the pngs are bit equal - let left_sha = calc_hash(&left_path); - os::remove_file(&left_path); - - let right_sha = calc_hash(&right_path); - os::remove_file(&right_path); - - assert!(left_sha.is_some()); - assert!(right_sha.is_some()); - match reftest.kind { - Same => assert!(left_sha == right_sha), - Different => assert!(left_sha != right_sha), - } -} + let args = ~[left_filename.clone(), right_filename.clone()]; + let mut process = run::Process::new("cmp", args, run::ProcessOptions::new()); + let retval = process.finish(); -fn gen_id(reftest: &Reftest) -> ~str { - let mut sha = Sha1::new(); match reftest.kind { - Same => sha.input_str("=="), - Different => sha.input_str("!="), - } - sha.input_str(reftest.left); - sha.input_str(reftest.right); - sha.result_str() -} - -fn calc_hash(path: &Path) -> Option<~str> { - match io::file_reader(path) { - Err(*) => None, - Ok(reader) => { - let mut sha = Sha1::new(); - loop { - let bytes = reader.read_bytes(4096); - sha.input(bytes); - if bytes.len() < 4096 { break; } - } - Some(sha.result_str()) - } + Same => assert!(retval == 0), + Different => assert!(retval != 0), } } |