use assert_cmd::prelude::*; use predicates::prelude::*; use std::process::Command; #[test] fn literal_output() -> Result<(), Box> { let mut cmd = Command::cargo_bin("echo")?; cmd.arg("abc\\ndef"); cmd.assert() .success() .stdout(predicate::str::contains("abc\\ndef\n")); Ok(()) } #[test] fn newline_escape() -> Result<(), Box> { let mut cmd = Command::cargo_bin("echo")?; cmd.arg("-e").arg("abc\\ndef"); cmd.assert() .success() .stdout(predicate::str::contains("abc\ndef")); Ok(()) } #[test] fn cut_output_escape() -> Result<(), Box> { let mut cmd = Command::cargo_bin("echo")?; cmd.arg("-e").arg("abc\\cdef"); cmd.assert() .success() .stdout(predicate::str::contains("abc")) .stdout(predicate::str::contains("def\n").not()); Ok(()) } #[test] fn omit_endline() -> Result<(), Box> { let mut cmd = Command::cargo_bin("echo")?; cmd.arg("-n").arg("abcdef"); cmd.assert() .success() .stdout(predicate::str::contains("abcdef")) .stdout(predicate::str::contains("\n").not()); Ok(()) }