diff options
Diffstat (limited to 'tests/ui/process/issue-14456.rs')
-rw-r--r-- | tests/ui/process/issue-14456.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/ui/process/issue-14456.rs b/tests/ui/process/issue-14456.rs new file mode 100644 index 000000000..52a56eb77 --- /dev/null +++ b/tests/ui/process/issue-14456.rs @@ -0,0 +1,37 @@ +// run-pass +#![allow(unused_mut)] +// ignore-emscripten no processes +// ignore-sgx no processes + +use std::env; +use std::io::prelude::*; +use std::io; +use std::process::{Command, Stdio}; + +fn main() { + let args: Vec<String> = env::args().collect(); + if args.len() > 1 && args[1] == "child" { + return child() + } + + test(); +} + +fn child() { + writeln!(&mut io::stdout(), "foo").unwrap(); + writeln!(&mut io::stderr(), "bar").unwrap(); + let mut stdin = io::stdin(); + let mut s = String::new(); + stdin.lock().read_line(&mut s).unwrap(); + assert_eq!(s.len(), 0); +} + +fn test() { + let args: Vec<String> = env::args().collect(); + let mut p = Command::new(&args[0]).arg("child") + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn().unwrap(); + assert!(p.wait().unwrap().success()); +} |