1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
use io_process::{
command::Command,
coroutines::spawn_then_wait_with_output::{
SpawnThenWaitWithOutput, SpawnThenWaitWithOutputResult,
},
runtimes::std::handle,
};
fn echo() -> Command {
let mut command = Command::new("echo");
command.arg("-n").arg("$TEST").env("TEST", "expanded");
command
}
#[test]
#[cfg(feature = "expand")]
pub fn expand() {
let _ = env_logger::try_init();
let mut command = echo();
command.expand = true;
let mut spawn = SpawnThenWaitWithOutput::new(command);
let mut arg = None;
let output = loop {
match spawn.resume(arg.take()) {
SpawnThenWaitWithOutputResult::Ok(output) => break output,
SpawnThenWaitWithOutputResult::Io(io) => arg = Some(handle(io).unwrap()),
SpawnThenWaitWithOutputResult::Err(err) => panic!("{err}"),
}
};
assert_eq!("expanded", String::from_utf8_lossy(&output.stdout));
}
#[test]
pub fn no_expand() {
let _ = env_logger::try_init();
let mut spawn = SpawnThenWaitWithOutput::new(echo());
let mut arg = None;
let output = loop {
match spawn.resume(arg.take()) {
SpawnThenWaitWithOutputResult::Ok(output) => break output,
SpawnThenWaitWithOutputResult::Io(io) => arg = Some(handle(io).unwrap()),
SpawnThenWaitWithOutputResult::Err(err) => panic!("{err}"),
}
};
assert_eq!("$TEST", String::from_utf8_lossy(&output.stdout));
}
|