mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +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.
|
// except according to those terms.
|
||||||
|
|
||||||
extern mod std;
|
extern mod std;
|
||||||
|
extern mod extra;
|
||||||
|
|
||||||
use std::test::{TestOpts, run_tests_console, TestDesc};
|
use extra::test::{TestOpts, run_tests_console, TestDesc, TestDescAndFn, DynTestFn, DynTestName};
|
||||||
use std::getopts::{getopts, reqopt, opt_str, fail_str};
|
use extra::getopts::{getopts, reqopt, opt_str, fail_str};
|
||||||
use os::list_dir_path;
|
use std::{os, run, io, str, vec};
|
||||||
|
use std::cell::Cell;
|
||||||
|
use std::os::list_dir_path;
|
||||||
|
|
||||||
|
#[deriving(Clone)]
|
||||||
struct Config {
|
struct Config {
|
||||||
source_dir: ~str,
|
source_dir: ~str,
|
||||||
filter: Option<~str>
|
filter: Option<~str>
|
||||||
|
@ -21,63 +25,68 @@ struct Config {
|
||||||
fn main() {
|
fn main() {
|
||||||
let args = os::args();
|
let args = os::args();
|
||||||
let config = parse_config(args);
|
let config = parse_config(args);
|
||||||
let opts = test_options(config);
|
let opts = test_options(config.clone());
|
||||||
let tests = find_tests(config);
|
let tests = find_tests(config);
|
||||||
run_tests_console(&opts, tests);
|
run_tests_console(&opts, tests);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_config(args: ~[~str]) -> Config {
|
fn parse_config(args: ~[~str]) -> Config {
|
||||||
let args = args.tail();
|
let args = args.tail();
|
||||||
let opts = ~[reqopt(~"source-dir")];
|
let opts = ~[reqopt("source-dir")];
|
||||||
let matches = match getopts(args, opts) {
|
let matches = match getopts(args, opts) {
|
||||||
Ok(m) => m,
|
Ok(m) => m,
|
||||||
Err(f) => fail fail_str(f)
|
Err(f) => fail!(fail_str(f))
|
||||||
};
|
};
|
||||||
|
|
||||||
Config {
|
Config {
|
||||||
source_dir: opt_str(matches, ~"source-dir"),
|
source_dir: opt_str(&matches, "source-dir"),
|
||||||
filter: if matches.free.is_empty() {
|
filter: if matches.free.is_empty() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
Some(matches.free.head())
|
Some((*matches.free.head()).clone())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_options(config: Config) -> TestOpts {
|
fn test_options(config: Config) -> TestOpts {
|
||||||
{
|
TestOpts {
|
||||||
filter: config.filter,
|
filter: config.filter,
|
||||||
run_ignored: false,
|
run_ignored: false,
|
||||||
|
run_tests: true,
|
||||||
|
run_benchmarks: false,
|
||||||
|
save_results: None,
|
||||||
|
compare_results: None,
|
||||||
logfile: 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 all_files = list_dir_path(&Path(config.source_dir));
|
||||||
let html_files = all_files.filter( |file| file.to_str().ends_with(".html") );
|
let html_files = vec::filter(all_files, |file| file.to_str().ends_with(".html") );
|
||||||
return html_files.map(|file| make_test(config, (*file).to_str()) );
|
return html_files.map(|file| make_test((*file).to_str()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_test(config: Config, file: ~str) -> TestDesc {
|
fn make_test(file: ~str) -> TestDescAndFn {
|
||||||
{
|
let f = Cell::new(file.clone());
|
||||||
name: file,
|
TestDescAndFn {
|
||||||
testfn: fn~() { run_test(config, file) },
|
desc: TestDesc {
|
||||||
ignore: false,
|
name: DynTestName(file),
|
||||||
should_fail: false
|
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 infile = ~"file://" + os::make_absolute(&Path(file)).to_str();
|
||||||
let res = run::program_output("./servo", ~[infile]);
|
let res = run::process_output("./servo", [infile]);
|
||||||
io::print(res.out);
|
let out = str::from_bytes(res.output);
|
||||||
do str::split_char_each(res.out, '\n') |line| {
|
io::print(out);
|
||||||
|
let lines: ~[&str] = out.split_iter('\n').collect();
|
||||||
|
for lines.iter().advance |&line| {
|
||||||
if line.contains("TEST-UNEXPECTED-FAIL") {
|
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