Revert "Revert "Use pipes in compiletest""
This reverts commit 96c6f57d18a26157117911a05152e135cfcee2ff.
This commit is contained in:
parent
1f2178e2d3
commit
1d04b0ed5a
@ -8,11 +8,6 @@ import task;
|
||||
import core::result;
|
||||
import result::{ok, err};
|
||||
|
||||
import comm::port;
|
||||
import comm::chan;
|
||||
import comm::send;
|
||||
import comm::recv;
|
||||
|
||||
import common::config;
|
||||
import common::mode_run_pass;
|
||||
import common::mode_run_fail;
|
||||
|
@ -2,6 +2,8 @@ import run::spawn_process;
|
||||
import io::{writer_util, reader_util};
|
||||
import libc::{c_int, pid_t};
|
||||
|
||||
import pipes::chan;
|
||||
|
||||
export run;
|
||||
|
||||
#[cfg(target_os = "win32")]
|
||||
@ -58,29 +60,30 @@ fn run(lib_path: ~str,
|
||||
|
||||
|
||||
writeclose(pipe_in.out, input);
|
||||
let p = comm::port();
|
||||
let ch = comm::chan(p);
|
||||
let p = pipes::port_set();
|
||||
let ch = p.chan();
|
||||
do task::spawn_sched(task::single_threaded) {
|
||||
let errput = readclose(pipe_err.in);
|
||||
comm::send(ch, (2, errput));
|
||||
ch.send((2, errput));
|
||||
}
|
||||
let ch = p.chan();
|
||||
do task::spawn_sched(task::single_threaded) {
|
||||
let output = readclose(pipe_out.in);
|
||||
comm::send(ch, (1, output));
|
||||
ch.send((1, output));
|
||||
}
|
||||
let status = run::waitpid(pid);
|
||||
let mut errs = ~"";
|
||||
let mut outs = ~"";
|
||||
let mut count = 2;
|
||||
while count > 0 {
|
||||
let stream = comm::recv(p);
|
||||
alt check stream {
|
||||
(1, s) {
|
||||
outs = s;
|
||||
}
|
||||
(2, s) {
|
||||
errs = s;
|
||||
}
|
||||
alt p.recv() {
|
||||
(1, s) {
|
||||
outs = s;
|
||||
}
|
||||
(2, s) {
|
||||
errs = s;
|
||||
}
|
||||
_ { fail }
|
||||
};
|
||||
count -= 1;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user