mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Make contenttest harness build again.
This commit is contained in:
parent
32c147fbde
commit
27b059b062
1 changed files with 36 additions and 27 deletions
|
@ -8,11 +8,15 @@
|
|||
// except according to those terms.
|
||||
|
||||
extern mod std;
|
||||
extern mod extra;
|
||||
|
||||
use std::test::{TestOpts, run_tests_console, TestDesc};
|
||||
use std::getopts::{getopts, reqopt, opt_str, fail_str};
|
||||
use os::list_dir_path;
|
||||
use extra::test::{TestOpts, run_tests_console, TestDesc, TestDescAndFn, DynTestFn, DynTestName};
|
||||
use extra::getopts::{getopts, reqopt, opt_str, fail_str};
|
||||
use std::{os, run, io, str, vec};
|
||||
use std::cell::Cell;
|
||||
use std::os::list_dir_path;
|
||||
|
||||
#[deriving(Clone)]
|
||||
struct Config {
|
||||
source_dir: ~str,
|
||||
filter: Option<~str>
|
||||
|
@ -21,63 +25,68 @@ struct Config {
|
|||
fn main() {
|
||||
let args = os::args();
|
||||
let config = parse_config(args);
|
||||
let opts = test_options(config);
|
||||
let opts = test_options(config.clone());
|
||||
let tests = find_tests(config);
|
||||
run_tests_console(&opts, tests);
|
||||
}
|
||||
|
||||
fn parse_config(args: ~[~str]) -> Config {
|
||||
let args = args.tail();
|
||||
let opts = ~[reqopt(~"source-dir")];
|
||||
let opts = ~[reqopt("source-dir")];
|
||||
let matches = match getopts(args, opts) {
|
||||
Ok(m) => m,
|
||||
Err(f) => fail fail_str(f)
|
||||
Err(f) => fail!(fail_str(f))
|
||||
};
|
||||
|
||||
Config {
|
||||
source_dir: opt_str(matches, ~"source-dir"),
|
||||
source_dir: opt_str(&matches, "source-dir"),
|
||||
filter: if matches.free.is_empty() {
|
||||
None
|
||||
} else {
|
||||
Some(matches.free.head())
|
||||
Some((*matches.free.head()).clone())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn test_options(config: Config) -> TestOpts {
|
||||
{
|
||||
TestOpts {
|
||||
filter: config.filter,
|
||||
run_ignored: false,
|
||||
run_tests: true,
|
||||
run_benchmarks: false,
|
||||
save_results: None,
|
||||
compare_results: None,
|
||||
logfile: None
|
||||
}
|
||||
}
|
||||
|
||||
fn find_tests(config: Config) -> ~[TestDesc] {
|
||||
fn find_tests(config: Config) -> ~[TestDescAndFn] {
|
||||
let all_files = list_dir_path(&Path(config.source_dir));
|
||||
let html_files = all_files.filter( |file| file.to_str().ends_with(".html") );
|
||||
return html_files.map(|file| make_test(config, (*file).to_str()) );
|
||||
let html_files = vec::filter(all_files, |file| file.to_str().ends_with(".html") );
|
||||
return html_files.map(|file| make_test((*file).to_str()) );
|
||||
}
|
||||
|
||||
fn make_test(config: Config, file: ~str) -> TestDesc {
|
||||
{
|
||||
name: file,
|
||||
testfn: fn~() { run_test(config, file) },
|
||||
ignore: false,
|
||||
should_fail: false
|
||||
fn make_test(file: ~str) -> TestDescAndFn {
|
||||
let f = Cell::new(file.clone());
|
||||
TestDescAndFn {
|
||||
desc: TestDesc {
|
||||
name: DynTestName(file),
|
||||
ignore: false,
|
||||
should_fail: false
|
||||
},
|
||||
testfn: DynTestFn(|| { run_test(f.take()) })
|
||||
}
|
||||
}
|
||||
|
||||
fn run_test(config: Config, file: ~str) {
|
||||
fn run_test(file: ~str) {
|
||||
let infile = ~"file://" + os::make_absolute(&Path(file)).to_str();
|
||||
let res = run::program_output("./servo", ~[infile]);
|
||||
io::print(res.out);
|
||||
do str::split_char_each(res.out, '\n') |line| {
|
||||
let res = run::process_output("./servo", [infile]);
|
||||
let out = str::from_bytes(res.output);
|
||||
io::print(out);
|
||||
let lines: ~[&str] = out.split_iter('\n').collect();
|
||||
for lines.iter().advance |&line| {
|
||||
if line.contains("TEST-UNEXPECTED-FAIL") {
|
||||
fail str::from_slice(line);
|
||||
fail!(line);
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
fn render_servo(config: Config, file: ~str) {
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue