aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2013-11-01 18:23:24 -0400
committerJosh Matthews <josh@joshmatthews.net>2013-11-01 18:23:24 -0400
commit403a82eb827a66b330aae93d9dc680615d7afed6 (patch)
tree19088fb13ad6a04424bbf1c58905840ea4c2481d /src
parentddce8b8fa0b09f1d56ce9684028e23f4974b2e5f (diff)
downloadservo-403a82eb827a66b330aae93d9dc680615d7afed6.tar.gz
servo-403a82eb827a66b330aae93d9dc680615d7afed6.zip
Display live stdout from content tests.
Diffstat (limited to 'src')
-rw-r--r--src/test/harness/contenttest/contenttest.rs32
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") {