diff options
author | Josh Matthews <josh@joshmatthews.net> | 2013-11-01 18:23:24 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2013-11-01 18:23:24 -0400 |
commit | 403a82eb827a66b330aae93d9dc680615d7afed6 (patch) | |
tree | 19088fb13ad6a04424bbf1c58905840ea4c2481d /src | |
parent | ddce8b8fa0b09f1d56ce9684028e23f4974b2e5f (diff) | |
download | servo-403a82eb827a66b330aae93d9dc680615d7afed6.tar.gz servo-403a82eb827a66b330aae93d9dc680615d7afed6.zip |
Display live stdout from content tests.
Diffstat (limited to 'src')
-rw-r--r-- | src/test/harness/contenttest/contenttest.rs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/test/harness/contenttest/contenttest.rs b/src/test/harness/contenttest/contenttest.rs index f9b17badd2a..d97ee7edb9f 100644 --- a/src/test/harness/contenttest/contenttest.rs +++ b/src/test/harness/contenttest/contenttest.rs @@ -12,9 +12,11 @@ extern mod extra; use extra::test::{TestOpts, run_tests_console, TestDesc, TestDescAndFn, DynTestFn, DynTestName}; use extra::getopts::{getopts, reqopt}; -use std::{os, run, str}; +use std::{os, str}; use std::cell::Cell; use std::os::list_dir_path; +use std::rt::io::Reader; +use std::rt::io::process::{Process, ProcessConfig, Ignored, CreatePipe}; #[deriving(Clone)] struct Config { @@ -87,9 +89,31 @@ fn run_test(file: ~str) { let path = os::make_absolute(&Path::new(file)); // FIXME (#1094): not the right way to transform a path let infile = ~"file://" + path.display().to_str(); - let res = run::process_output("./servo", [~"-z", infile]); - let out = str::from_utf8(res.output); - print(out); + let create_pipe = CreatePipe(true, false); // rustc #10228 + + let config = ProcessConfig { + program: "./servo", + args: [~"-z", infile.clone()], + env: None, + cwd: None, + io: [Ignored, create_pipe, Ignored] + }; + + let mut prc = Process::new(config).unwrap(); + let stdout = prc.io[1].get_mut_ref(); + let mut output = ~[]; + loop { + let byte = stdout.read_byte(); + match byte { + Some(byte) => { + print!("{}", byte as char); + output.push(byte); + } + None => break + } + } + + let out = str::from_utf8(output); let lines: ~[&str] = out.split_iter('\n').collect(); for &line in lines.iter() { if line.contains("TEST-UNEXPECTED-FAIL") { |