aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/harness/reftest/reftest.rs65
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),
}
}