// This file is part of the uutils coreutils package. // // For the full copyright and license information, please view the LICENSE // file that was distributed with this source code. use uutests::new_ucmd; // spell-checker:ignore checkfile, testf, ntestf macro_rules! get_hash( ($str:expr) => ( $str.split(' ').collect::>()[0] ); ); macro_rules! test_digest { ($id:ident) => { mod $id { use uutests::util::*; use uutests::util_name; static EXPECTED_FILE: &'static str = concat!(stringify!($id), ".expected"); static CHECK_FILE: &'static str = concat!(stringify!($id), ".checkfile"); static INPUT_FILE: &'static str = "input.txt"; #[test] fn test_single_file() { let ts = TestScenario::new(util_name!()); assert_eq!( ts.fixtures.read(EXPECTED_FILE), get_hash!( ts.ucmd() .arg(INPUT_FILE) .succeeds() .no_stderr() .stdout_str() ) ); } #[test] fn test_stdin() { let ts = TestScenario::new(util_name!()); assert_eq!( ts.fixtures.read(EXPECTED_FILE), get_hash!( ts.ucmd() .pipe_in_fixture(INPUT_FILE) .succeeds() .no_stderr() .stdout_str() ) ); } #[test] fn test_check() { let ts = TestScenario::new(util_name!()); println!("File content='{}'", ts.fixtures.read(INPUT_FILE)); println!("Check file='{}'", ts.fixtures.read(CHECK_FILE)); ts.ucmd() .args(&["--check", CHECK_FILE]) .succeeds() .no_stderr() .stdout_is("input.txt: OK\n"); } #[test] fn test_zero() { let ts = TestScenario::new(util_name!()); assert_eq!( ts.fixtures.read(EXPECTED_FILE), get_hash!( ts.ucmd() .arg("--zero") .arg(INPUT_FILE) .succeeds() .no_stderr() .stdout_str() ) ); } #[test] fn test_missing_file() { let ts = TestScenario::new(util_name!()); let at = &ts.fixtures; at.write("a", "file1\n"); at.write("c", "file3\n"); ts.ucmd() .args(&["a", "b", "c"]) .fails() .stdout_contains("a\n") .stdout_contains("c\n") .stderr_contains("b: No such file or directory"); } } }; } test_digest! {sha224} #[test] fn test_invalid_arg() { new_ucmd!().arg("--definitely-invalid").fails_with_code(1); } #[test] fn test_conflicting_arg() { new_ucmd!().arg("--tag").arg("--check").fails_with_code(1); }