mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
tests/util: Refactor UCommand and TestScenario.
Summary of changes in UCommand: * Extend UCommand by builder methods and simplify methods in TestScenario * Simplify code structures where possible. Add documentation. * Store bin_path as PathBuf and util_name as String in all structs * Remove UCommand::util and make bin_path, temp_dir private * Rename UCommand::with_limit -> UCommand::limit Summary of changes in TestScenario: * Rename some parameters in TestScenario methods to be more descriptive * Remove ucmd_keepenv, cmd_keepenv from TestScenario. Use UCommand::keep_env instead.
This commit is contained in:
@@ -103,7 +103,7 @@ fn test_closes_file_descriptors() {
|
||||
"alpha.txt",
|
||||
"alpha.txt",
|
||||
])
|
||||
.with_limit(Resource::NOFILE, 9, 9)
|
||||
.limit(Resource::NOFILE, 9, 9)
|
||||
.succeeds();
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ fn run_single_test(test: &TestCase, at: &AtPath, mut ucmd: UCommand) {
|
||||
let r = ucmd.run();
|
||||
if !r.succeeded() {
|
||||
println!("{}", r.stderr_str());
|
||||
panic!("{}: failed", ucmd);
|
||||
panic!("{ucmd}: failed");
|
||||
}
|
||||
|
||||
let perms = at.metadata(TEST_FILE).permissions().mode();
|
||||
|
||||
@@ -396,7 +396,7 @@ fn test_chown_only_user_id() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-u").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-u").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
@@ -430,7 +430,7 @@ fn test_chown_fail_id() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-u").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-u").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
@@ -487,7 +487,7 @@ fn test_chown_only_group_id() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-g").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-g").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
@@ -551,14 +551,14 @@ fn test_chown_owner_group_id() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-u").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-u").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
let user_id = String::from(result.stdout_str().trim());
|
||||
assert!(!user_id.is_empty());
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-g").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-g").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
@@ -612,14 +612,14 @@ fn test_chown_owner_group_mix() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-u").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-u").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
let user_id = String::from(result.stdout_str().trim());
|
||||
assert!(!user_id.is_empty());
|
||||
|
||||
let result = scene.cmd_keepenv("id").arg("-gn").run();
|
||||
let result = scene.cmd("id").keep_env().arg("-gn").run();
|
||||
if skipping_test_is_okay(&result, "id: cannot find name for group ID") {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1545,7 +1545,7 @@ fn test_closes_file_descriptors() {
|
||||
.arg("--reflink=auto")
|
||||
.arg("dir_with_10_files/")
|
||||
.arg("dir_with_10_files_new/")
|
||||
.with_limit(Resource::NOFILE, limit_fd, limit_fd)
|
||||
.limit(Resource::NOFILE, limit_fd, limit_fd)
|
||||
.succeeds();
|
||||
}
|
||||
|
||||
@@ -1692,7 +1692,8 @@ fn test_cp_reflink_always_override() {
|
||||
.succeeds();
|
||||
|
||||
if !scene
|
||||
.cmd_keepenv("env")
|
||||
.cmd("env")
|
||||
.keep_env()
|
||||
.args(&["mkfs.btrfs", "--rootdir", ROOTDIR, DISK])
|
||||
.run()
|
||||
.succeeded()
|
||||
@@ -1704,7 +1705,8 @@ fn test_cp_reflink_always_override() {
|
||||
scene.fixtures.mkdir(MOUNTPOINT);
|
||||
|
||||
let mount = scene
|
||||
.cmd_keepenv("sudo")
|
||||
.cmd("sudo")
|
||||
.keep_env()
|
||||
.args(&["-E", "--non-interactive", "mount", DISK, MOUNTPOINT])
|
||||
.run();
|
||||
|
||||
@@ -1730,7 +1732,8 @@ fn test_cp_reflink_always_override() {
|
||||
.succeeds();
|
||||
|
||||
scene
|
||||
.cmd_keepenv("sudo")
|
||||
.cmd("sudo")
|
||||
.keep_env()
|
||||
.args(&["-E", "--non-interactive", "umount", MOUNTPOINT])
|
||||
.succeeds();
|
||||
}
|
||||
|
||||
@@ -156,7 +156,8 @@ 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()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("-u")
|
||||
.arg("HOME")
|
||||
.succeeds()
|
||||
|
||||
@@ -425,7 +425,8 @@ fn test_mktemp_tmpdir_one_arg() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
|
||||
let result = scene
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("--tmpdir")
|
||||
.arg("apt-key-gpghome.XXXXXXXXXX")
|
||||
.succeeds();
|
||||
@@ -438,7 +439,8 @@ fn test_mktemp_directory_tmpdir() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
|
||||
let result = scene
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("--directory")
|
||||
.arg("--tmpdir")
|
||||
.arg("apt-key-gpghome.XXXXXXXXXX")
|
||||
|
||||
+34
-17
@@ -20,7 +20,8 @@ fn test_nproc_all_omp() {
|
||||
assert!(nproc > 0);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "60")
|
||||
.succeeds();
|
||||
|
||||
@@ -28,7 +29,8 @@ fn test_nproc_all_omp() {
|
||||
assert_eq!(nproc_omp, 60);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "1") // Has no effect
|
||||
.arg("--all")
|
||||
.succeeds();
|
||||
@@ -37,7 +39,8 @@ fn test_nproc_all_omp() {
|
||||
|
||||
// If the parsing fails, returns the number of CPU
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "incorrectnumber") // returns the number CPU
|
||||
.succeeds();
|
||||
let nproc_omp: u8 = result.stdout_str().trim().parse().unwrap();
|
||||
@@ -51,7 +54,8 @@ fn test_nproc_ignore() {
|
||||
if nproc_total > 1 {
|
||||
// Ignore all CPU but one
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("--ignore")
|
||||
.arg((nproc_total - 1).to_string())
|
||||
.succeeds();
|
||||
@@ -59,7 +63,8 @@ fn test_nproc_ignore() {
|
||||
assert_eq!(nproc, 1);
|
||||
// Ignore all CPU but one with a string
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("--ignore= 1")
|
||||
.succeeds();
|
||||
let nproc: u8 = result.stdout_str().trim().parse().unwrap();
|
||||
@@ -70,7 +75,8 @@ fn test_nproc_ignore() {
|
||||
#[test]
|
||||
fn test_nproc_ignore_all_omp() {
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "42")
|
||||
.arg("--ignore=40")
|
||||
.succeeds();
|
||||
@@ -81,7 +87,8 @@ fn test_nproc_ignore_all_omp() {
|
||||
#[test]
|
||||
fn test_nproc_omp_limit() {
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "42")
|
||||
.env("OMP_THREAD_LIMIT", "0")
|
||||
.succeeds();
|
||||
@@ -89,7 +96,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(nproc, 42);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "42")
|
||||
.env("OMP_THREAD_LIMIT", "2")
|
||||
.succeeds();
|
||||
@@ -97,7 +105,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(nproc, 2);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "42")
|
||||
.env("OMP_THREAD_LIMIT", "2bad")
|
||||
.succeeds();
|
||||
@@ -109,14 +118,16 @@ fn test_nproc_omp_limit() {
|
||||
assert!(nproc_system > 0);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_THREAD_LIMIT", "1")
|
||||
.succeeds();
|
||||
let nproc: u8 = result.stdout_str().trim().parse().unwrap();
|
||||
assert_eq!(nproc, 1);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "0")
|
||||
.env("OMP_THREAD_LIMIT", "")
|
||||
.succeeds();
|
||||
@@ -124,7 +135,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(nproc, nproc_system);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "")
|
||||
.env("OMP_THREAD_LIMIT", "")
|
||||
.succeeds();
|
||||
@@ -132,7 +144,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(nproc, nproc_system);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "2,2,1")
|
||||
.env("OMP_THREAD_LIMIT", "")
|
||||
.succeeds();
|
||||
@@ -140,7 +153,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(2, nproc);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "2,ignored")
|
||||
.env("OMP_THREAD_LIMIT", "")
|
||||
.succeeds();
|
||||
@@ -148,7 +162,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(2, nproc);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "2,2,1")
|
||||
.env("OMP_THREAD_LIMIT", "0")
|
||||
.succeeds();
|
||||
@@ -156,7 +171,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(2, nproc);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "2,2,1")
|
||||
.env("OMP_THREAD_LIMIT", "1bad")
|
||||
.succeeds();
|
||||
@@ -164,7 +180,8 @@ fn test_nproc_omp_limit() {
|
||||
assert_eq!(2, nproc);
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.env("OMP_NUM_THREADS", "29,2,1")
|
||||
.env("OMP_THREAD_LIMIT", "1bad")
|
||||
.succeeds();
|
||||
|
||||
@@ -8,7 +8,8 @@ fn test_get_all() {
|
||||
assert_eq!(env::var(key), Ok("VALUE".to_string()));
|
||||
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.succeeds()
|
||||
.stdout_contains("HOME=")
|
||||
.stdout_contains("KEY=VALUE");
|
||||
@@ -21,7 +22,8 @@ fn test_get_var() {
|
||||
assert_eq!(env::var(key), Ok("VALUE".to_string()));
|
||||
|
||||
let result = TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("KEY")
|
||||
.succeeds();
|
||||
|
||||
|
||||
@@ -31,7 +31,8 @@ fn test_buffer_sizes() {
|
||||
let buffer_sizes = ["0", "50K", "50k", "1M", "100M"];
|
||||
for buffer_size in &buffer_sizes {
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("-n")
|
||||
.arg("-S")
|
||||
.arg(buffer_size)
|
||||
@@ -44,7 +45,8 @@ fn test_buffer_sizes() {
|
||||
let buffer_sizes = ["1000G", "10T"];
|
||||
for buffer_size in &buffer_sizes {
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("-n")
|
||||
.arg("-S")
|
||||
.arg(buffer_size)
|
||||
@@ -918,7 +920,8 @@ fn test_compress_merge() {
|
||||
fn test_compress_fail() {
|
||||
#[cfg(not(windows))]
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.args(&[
|
||||
"ext_sort.txt",
|
||||
"-n",
|
||||
@@ -934,7 +937,8 @@ fn test_compress_fail() {
|
||||
// So, don't check the output
|
||||
#[cfg(windows)]
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.args(&[
|
||||
"ext_sort.txt",
|
||||
"-n",
|
||||
@@ -949,7 +953,8 @@ fn test_compress_fail() {
|
||||
#[test]
|
||||
fn test_merge_batches() {
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.timeout(Duration::from_secs(120))
|
||||
.args(&["ext_sort.txt", "-n", "-S", "150b"])
|
||||
.succeeds()
|
||||
@@ -959,7 +964,8 @@ fn test_merge_batches() {
|
||||
#[test]
|
||||
fn test_merge_batch_size() {
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.arg("--batch-size=2")
|
||||
.arg("-m")
|
||||
.arg("--unique")
|
||||
@@ -1067,7 +1073,8 @@ fn test_output_is_input() {
|
||||
at.touch("file");
|
||||
at.append("file", input);
|
||||
scene
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.args(&["-m", "-u", "-o", "file", "file", "file", "file"])
|
||||
.succeeds();
|
||||
assert_eq!(at.read("file"), input);
|
||||
|
||||
@@ -10,7 +10,8 @@ fn test_invalid_arg() {
|
||||
#[test]
|
||||
fn test_uptime() {
|
||||
TestScenario::new(util_name!())
|
||||
.ucmd_keepenv()
|
||||
.ucmd()
|
||||
.keep_env()
|
||||
.succeeds()
|
||||
.stdout_contains("load average:")
|
||||
.stdout_contains(" up ");
|
||||
|
||||
@@ -22,7 +22,8 @@ fn test_users_check_name() {
|
||||
// note: clippy::needless_borrow *false positive*
|
||||
#[allow(clippy::needless_borrow)]
|
||||
let expected = TestScenario::new(&util_name)
|
||||
.cmd_keepenv(util_name)
|
||||
.cmd(util_name)
|
||||
.keep_env()
|
||||
.env("LC_ALL", "C")
|
||||
.succeeds()
|
||||
.stdout_move_str();
|
||||
|
||||
+198
-141
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user