From aeb2429b5f03cacd88719ca96ef6aeff765163a2 Mon Sep 17 00:00:00 2001 From: jsondevers Date: Sat, 26 Apr 2025 15:20:47 -0700 Subject: [PATCH 1/6] porting findutils testing to use uutests closes #537 --- Cargo.toml | 2 ++ tests/common/mod.rs | 10 ++++++++++ tests/find_cmd_tests.rs | 31 +++++++++++++++---------------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6ed71241..54ce18d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,8 @@ onig = { version = "6.4", default-features = false } uucore = { version = "0.0.30", features = ["entries", "fs", "fsext", "mode"] } nix = { version = "0.29", features = ["fs", "user"] } argmax = "0.3.1" +uutests = { version = "0.0.30" } +ctor = "0.4.1" [dev-dependencies] assert_cmd = "2" diff --git a/tests/common/mod.rs b/tests/common/mod.rs index aa8de375..c42353ba 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -8,3 +8,13 @@ // in one test but not another can cause a dead code warning. #[allow(dead_code)] pub mod test_helpers; +pub const TESTS_BINARY: &str = env!("CARGO_BIN_EXE_find"); + +// Use the ctor attribute to run this function before any tests +#[ctor::ctor] +fn init() { + unsafe { + // Necessary for uutests to be able to find the binary + std::env::set_var("UUTESTS_BINARY_PATH", TESTS_BINARY); + } +} diff --git a/tests/find_cmd_tests.rs b/tests/find_cmd_tests.rs index c4c3692e..7f7a53d6 100644 --- a/tests/find_cmd_tests.rs +++ b/tests/find_cmd_tests.rs @@ -16,6 +16,8 @@ use std::fs::{self, File}; use std::io::{Read, Write}; use std::{env, io::ErrorKind}; use tempfile::Builder; +use uutests::util::TestScenario; +use uutests::{at_and_ucmd, new_ucmd, util_name}; #[cfg(unix)] use std::os::unix::fs::symlink; @@ -39,15 +41,14 @@ fn fix_up_regex_slashes(re: &str) -> String { re.to_owned() } -#[serial(working_dir)] #[test] fn no_args() { - Command::cargo_bin("find") - .expect("found binary") - .assert() - .success() - .stderr(predicate::str::is_empty()) - .stdout(predicate::str::contains("test_data")); + let ts = TestScenario::new("find"); + ts.cmd(env!("CARGO_BIN_EXE_find")) + .current_dir(env!("CARGO_MANIFEST_DIR")) + .succeeds() + .no_stderr() + .stdout_contains("test_data"); } #[serial(working_dir)] @@ -707,15 +708,13 @@ fn find_time() { #[test] fn expression_empty_parentheses() { - Command::cargo_bin("find") - .expect("found binary") - .args(["-true", "(", ")"]) - .assert() - .failure() - .stderr(predicate::str::contains( - "empty parentheses are not allowed", - )) - .stdout(predicate::str::is_empty()); + let (_at, mut ucmd) = at_and_ucmd!(); + ucmd.arg("-true") + .arg("(") + .arg(")") + .fails() + .stderr_contains("empty parentheses are not allowed") + .no_stdout(); } #[test] From 384e7ac57826e80ef28ef412c8462e917298d96c Mon Sep 17 00:00:00 2001 From: Sridhar Sarnobat Date: Mon, 13 Oct 2025 21:41:57 -0400 Subject: [PATCH 2/6] 2025-10-13: Cargo.toml --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f5ff26e1..cf12ed74 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,11 +14,11 @@ chrono = "0.4.42" clap = "4.5" faccess = "0.2.4" walkdir = "2.5" -regex = "1.11" -onig = { version = "6.4", default-features = false } -uucore = { version = "0.0.30", features = ["entries", "fs", "fsext", "mode"] } -nix = { version = "0.29", features = ["fs", "user"] } -argmax = "0.3.1" +regex = "1.12" +onig = { version = "6.5", default-features = false } +uucore = { version = "0.2.2", features = ["entries", "fs", "fsext", "mode"] } +nix = { version = "0.30", features = ["fs", "user"] } +argmax = "0.4.0" uutests = { version = "0.0.30" } ctor = "0.4.1" From ad03fabd55329248d478fdd51fb6585908c4ca96 Mon Sep 17 00:00:00 2001 From: Sridhar Sarnobat Date: Mon, 13 Oct 2025 22:12:09 -0400 Subject: [PATCH 3/6] 2025-10-13: Cargo.lock find_cmd_tests.rs --- Cargo.lock | 344 +++++++++++++++++++++++++++++++++++++++- tests/find_cmd_tests.rs | 15 +- 2 files changed, 346 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index de04c6a2..d93197dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,7 +77,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0144c58b55af0133ec3963ce5e4d07aad866e3bbcfdcddbf4590dbd7ad6ff557" dependencies = [ "libc", - "nix", + "nix 0.30.1", "once_cell", ] @@ -166,6 +166,16 @@ dependencies = [ "windows-link 0.2.0", ] +[[package]] +name = "chrono-tz" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" +dependencies = [ + "chrono", + "phf", +] + [[package]] name = "clap" version = "4.5.48" @@ -206,6 +216,31 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "ctor" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec09e802f5081de6157da9a75701d6c713d8dc3ba52571fd4bd25f412644e8a6" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" + +[[package]] +name = "deranged" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +dependencies = [ + "powerfmt", +] + [[package]] name = "diff" version = "0.1.13" @@ -229,12 +264,39 @@ dependencies = [ "syn", ] +[[package]] +name = "dns-lookup" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5597a4b7fe5275fc9dcf88ce26326bc8e4cb87d0130f33752d4c5f717793cf" +dependencies = [ + "cfg-if", + "libc", + "socket2", + "windows-sys 0.60.2", +] + [[package]] name = "doc-comment" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "dtor" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97cbdf2ad6846025e8e25df05171abfb30e3ababa12ee0a0e44b9bbe570633a8" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7454e41ff9012c00d53cf7f475c5e3afa3b91b7c90568495495e8d9bf47a1055" + [[package]] name = "dunce" version = "1.0.4" @@ -288,16 +350,18 @@ dependencies = [ "assert_cmd", "chrono", "clap", + "ctor", "faccess", "filetime", - "nix", + "nix 0.30.1", "onig", "predicates", "pretty_assertions", "regex", "serial_test", "tempfile", - "uucore", + "uucore 0.2.2", + "uutests", "walkdir", ] @@ -499,6 +563,12 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + [[package]] name = "js-sys" version = "0.3.68" @@ -562,6 +632,18 @@ version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "nix" version = "0.30.1" @@ -580,6 +662,12 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.14" @@ -589,6 +677,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "number_prefix" version = "0.4.0" @@ -655,6 +752,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "phf" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -673,6 +788,21 @@ version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + [[package]] name = "predicates" version = "3.1.3" @@ -731,6 +861,35 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + [[package]] name = "redox_syscall" version = "0.5.3" @@ -769,6 +928,15 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "rlimit" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7043b63bd0cd1aaa628e476b80e6d4023a3b50eb32789f2728908107bd0c793a" +dependencies = [ + "libc", +] + [[package]] name = "rustc-hash" version = "2.1.1" @@ -839,9 +1007,32 @@ checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" [[package]] name = "serde" -version = "1.0.147" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "serial_test" @@ -874,6 +1065,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "slab" version = "0.4.6" @@ -886,6 +1083,16 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "strsim" version = "0.11.0" @@ -946,6 +1153,39 @@ dependencies = [ "syn", ] +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.8.1" @@ -1007,6 +1247,27 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "uucore" +version = "0.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71f4e82877d06de779c611a3d54720f56f1e68b228fb30a5b6c66ef07e68263d" +dependencies = [ + "chrono", + "chrono-tz", + "clap", + "dns-lookup", + "glob", + "iana-time-zone", + "libc", + "nix 0.29.0", + "number_prefix", + "os_display", + "time", + "uucore_procs 0.0.30", + "wild", +] + [[package]] name = "uucore" version = "0.2.2" @@ -1020,17 +1281,28 @@ dependencies = [ "fluent-bundle", "fluent-syntax", "libc", - "nix", + "nix 0.30.1", "number_prefix", "os_display", "thiserror", "unic-langid", - "uucore_procs", + "uucore_procs 0.2.2", "wild", "winapi-util", "windows-sys 0.61.0", ] +[[package]] +name = "uucore_procs" +version = "0.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c72435859e812e602e225dea48d014abb6b1072220a8d44f2fe0565553b1f7e4" +dependencies = [ + "proc-macro2", + "quote", + "uuhelp_parser 0.0.30", +] + [[package]] name = "uucore_procs" version = "0.2.2" @@ -1039,15 +1311,41 @@ checksum = "449e64ce116ed0cc8c5897bd8706d36aed1ec027b647494df4eae6996d8d59de" dependencies = [ "proc-macro2", "quote", - "uuhelp_parser", + "uuhelp_parser 0.2.2", ] +[[package]] +name = "uuhelp_parser" +version = "0.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb6d972f580f8223cb7052d8580aea2b7061e368cf476de32ea9457b19459ed" + [[package]] name = "uuhelp_parser" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c9e4945611996e885dc4eeae23f3d6f20cfb6e8f4bad4985c2222bbcf9a9745" +[[package]] +name = "uutests" +version = "0.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f33bc1f552cd82939d3e07867b118ed7ef7bc0fef04b330e1ac69f98593cb22" +dependencies = [ + "ctor", + "glob", + "libc", + "nix 0.29.0", + "pretty_assertions", + "rand", + "regex", + "rlimit", + "tempfile", + "time", + "uucore 0.0.30", + "xattr", +] + [[package]] name = "wait-timeout" version = "0.2.0" @@ -1356,12 +1654,42 @@ dependencies = [ "bitflags 2.4.1", ] +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix 1.0.0", +] + [[package]] name = "yansi" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zerofrom" version = "0.1.6" diff --git a/tests/find_cmd_tests.rs b/tests/find_cmd_tests.rs index 53c68949..bf0c82aa 100644 --- a/tests/find_cmd_tests.rs +++ b/tests/find_cmd_tests.rs @@ -43,12 +43,17 @@ fn fix_up_regex_slashes(re: &str) -> String { #[test] fn no_args() { - let ts = TestScenario::new("find"); - ts.cmd(env!("CARGO_BIN_EXE_find")) + new_ucmd!() + //.arg("--invalid-argument") .current_dir(env!("CARGO_MANIFEST_DIR")) - .succeeds() - .no_stderr() - .stdout_contains("test_data"); + .fails_with_code(1) + .no_stdout(); + // let ts = TestScenario::new("find"); + // ts.cmd(env!("CARGO_BIN_EXE_find")) + // .current_dir(env!("CARGO_MANIFEST_DIR")) + // .succeeds() + // .no_stderr() + // .stdout_contains("test_data"); } #[serial(working_dir)] From a821295f503a921a8616c9dd820ed7455dbfdf04 Mon Sep 17 00:00:00 2001 From: Sridhar Sarnobat Date: Mon, 13 Oct 2025 22:22:15 -0400 Subject: [PATCH 4/6] 2025-10-13: find_cmd_tests.rs --- tests/find_cmd_tests.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tests/find_cmd_tests.rs b/tests/find_cmd_tests.rs index bf0c82aa..53c68949 100644 --- a/tests/find_cmd_tests.rs +++ b/tests/find_cmd_tests.rs @@ -43,17 +43,12 @@ fn fix_up_regex_slashes(re: &str) -> String { #[test] fn no_args() { - new_ucmd!() - //.arg("--invalid-argument") + let ts = TestScenario::new("find"); + ts.cmd(env!("CARGO_BIN_EXE_find")) .current_dir(env!("CARGO_MANIFEST_DIR")) - .fails_with_code(1) - .no_stdout(); - // let ts = TestScenario::new("find"); - // ts.cmd(env!("CARGO_BIN_EXE_find")) - // .current_dir(env!("CARGO_MANIFEST_DIR")) - // .succeeds() - // .no_stderr() - // .stdout_contains("test_data"); + .succeeds() + .no_stderr() + .stdout_contains("test_data"); } #[serial(working_dir)] From 5182478b4b6f3a9590d0f01327a7b00fa36e0358 Mon Sep 17 00:00:00 2001 From: Sridhar Sarnobat Date: Thu, 16 Oct 2025 22:51:36 -0400 Subject: [PATCH 5/6] 2025-10-16: find_cmd_tests.rs --- tests/find_cmd_tests.rs | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/tests/find_cmd_tests.rs b/tests/find_cmd_tests.rs index 53c68949..6c27f01f 100644 --- a/tests/find_cmd_tests.rs +++ b/tests/find_cmd_tests.rs @@ -264,27 +264,28 @@ fn files0_pipe_double_nul() { #[serial(working_dir)] #[test] fn files0_no_file() { + let scene = TestScenario::new("find"); + let option: Vec<_> = "-files0-from xyz.nonexistentFile" + .split(' ') + .collect::>(); + #[cfg(unix)] { - Command::cargo_bin("find") - .expect("found binary") - .args(["-files0-from", "xyz.nonexistentFile"]) - .assert() - .failure() - .stderr(predicate::str::contains("No such file or directory")) - .stdout(predicate::str::is_empty()); + scene + .ucmd() + .args(&option) + .fails_with_code(1) + .stderr_contains("No such file or directory") + .no_stdout(); } #[cfg(windows)] { - Command::cargo_bin("find") - .expect("found binary") - .args(["-files0-from", "xyz.nonexistantFile"]) - .assert() - .failure() - .stderr(predicate::str::contains( - "The system cannot find the file specified.", - )) - .stdout(predicate::str::is_empty()); + scene + .ucmd() + .args(&option) + .fails_with_code(1) + .stderr_contains("The system cannot find the file specified.") + .no_stdout(); } } From c98f65b2e1d3647f81ad2e2d2355b02285c27e2e Mon Sep 17 00:00:00 2001 From: Sridhar Sarnobat Date: Thu, 16 Oct 2025 22:54:14 -0400 Subject: [PATCH 6/6] 2025-10-16: find_cmd_tests.rs --- tests/find_cmd_tests.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/find_cmd_tests.rs b/tests/find_cmd_tests.rs index 6c27f01f..81dada3a 100644 --- a/tests/find_cmd_tests.rs +++ b/tests/find_cmd_tests.rs @@ -41,6 +41,7 @@ fn fix_up_regex_slashes(re: &str) -> String { re.to_owned() } +#[serial(working_dir)] #[test] fn no_args() { let ts = TestScenario::new("find");