mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 15:22:38 +00:00
136 lines
3.3 KiB
Rust
136 lines
3.3 KiB
Rust
use common::util::*;
|
|
|
|
#[test]
|
|
fn test_env_help() {
|
|
assert!(new_ucmd!().arg("--help").succeeds().no_stderr().stdout.contains("OPTIONS:"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_env_version() {
|
|
assert!(new_ucmd!().arg("--version").succeeds().no_stderr().stdout.contains(util_name!()));
|
|
}
|
|
|
|
#[test]
|
|
fn test_echo() {
|
|
// assert!(new_ucmd!().arg("printf").arg("FOO-bar").succeeds().no_stderr().stdout.contains("FOO-bar"));
|
|
let mut cmd = new_ucmd!();
|
|
cmd.arg("echo").arg("FOO-bar");
|
|
println!("cmd={:?}", cmd);
|
|
|
|
let result = cmd.run();
|
|
println!("success={:?}", result.success);
|
|
println!("stdout={:?}", result.stdout);
|
|
println!("stderr={:?}", result.stderr);
|
|
assert!(result.success);
|
|
|
|
let out = result.stdout.trim_end();
|
|
|
|
assert_eq!(out, "FOO-bar");
|
|
}
|
|
|
|
#[test]
|
|
fn test_file_option() {
|
|
let out = new_ucmd!()
|
|
.arg("-f").arg("vars.conf.txt")
|
|
.run().stdout;
|
|
|
|
assert_eq!(out.lines().filter(|&line| line == "FOO=bar" || line == "BAR=bamf this").count(), 2);
|
|
}
|
|
|
|
#[test]
|
|
fn test_combined_file_set() {
|
|
let out = new_ucmd!()
|
|
.arg("-f").arg("vars.conf.txt")
|
|
.arg("FOO=bar.alt")
|
|
.run().stdout;
|
|
|
|
assert_eq!(out.lines().filter(|&line| line == "FOO=bar.alt").count(), 1);
|
|
}
|
|
|
|
#[test]
|
|
fn test_combined_file_set_unset() {
|
|
let out = new_ucmd!()
|
|
.arg("-u").arg("BAR")
|
|
.arg("-f").arg("vars.conf.txt")
|
|
.arg("FOO=bar.alt")
|
|
.run().stdout;
|
|
|
|
assert_eq!(out.lines().filter(|&line| line == "FOO=bar.alt" || line.starts_with("BAR=")).count(), 1);
|
|
}
|
|
|
|
#[test]
|
|
fn test_single_name_value_pair() {
|
|
let out = new_ucmd!()
|
|
.arg("FOO=bar").run().stdout;
|
|
|
|
assert!(out.lines().any(|line| line == "FOO=bar"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_multiple_name_value_pairs() {
|
|
let out = new_ucmd!()
|
|
.arg("FOO=bar")
|
|
.arg("ABC=xyz")
|
|
.run()
|
|
.stdout;
|
|
|
|
assert_eq!(out.lines().filter(|&line| line == "FOO=bar" || line == "ABC=xyz").count(),
|
|
2);
|
|
}
|
|
|
|
#[test]
|
|
fn test_ignore_environment() {
|
|
let scene = TestScenario::new(util_name!());
|
|
|
|
let out = scene.ucmd()
|
|
.arg("-i")
|
|
.run()
|
|
.stdout;
|
|
|
|
assert_eq!(out, "");
|
|
|
|
let out = scene.ucmd()
|
|
.arg("-")
|
|
.run()
|
|
.stdout;
|
|
|
|
assert_eq!(out, "");
|
|
}
|
|
|
|
#[test]
|
|
fn test_null_delimiter() {
|
|
let out = new_ucmd!()
|
|
.arg("-i")
|
|
.arg("--null")
|
|
.arg("FOO=bar")
|
|
.arg("ABC=xyz")
|
|
.run()
|
|
.stdout;
|
|
|
|
let mut vars : Vec<_> = out.split('\0').collect();
|
|
assert_eq!(vars.len(), 3);
|
|
vars.sort();
|
|
assert_eq!(vars[0], "");
|
|
assert_eq!(vars[1], "ABC=xyz");
|
|
assert_eq!(vars[2], "FOO=bar");
|
|
}
|
|
|
|
#[test]
|
|
fn test_unset_variable() {
|
|
// This test depends on the HOME variable being pre-defined by the
|
|
// default shell
|
|
let out = TestScenario::new(util_name!())
|
|
.ucmd_keepenv()
|
|
.arg("-u")
|
|
.arg("HOME")
|
|
.run()
|
|
.stdout;
|
|
|
|
assert_eq!(out.lines().any(|line| line.starts_with("HOME=")), false);
|
|
}
|
|
|
|
#[test]
|
|
fn test_fail_null_with_program() {
|
|
let out = new_ucmd!().arg("--null").arg("cd").fails().stderr;
|
|
assert!(out.contains("cannot specify --null (-0) with command"));
|
|
}
|