File: expand.rs

package info (click to toggle)
rust-io-process 0.0.2%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 280 kB
  • sloc: makefile: 2; sh: 1
file content (53 lines) | stat: -rw-r--r-- 1,476 bytes parent folder | download
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));
}