From ca6d0eda3dce8b213e0dd27c331decde91d363e9 Mon Sep 17 00:00:00 2001 From: Pistonight Date: Mon, 21 Oct 2024 11:59:18 -0700 Subject: [PATCH] hashsum: Windows: check in binary mode by default and allow --binary/--text whcn checking --- src/uu/hashsum/src/hashsum.rs | 23 ++++--- tests/by-util/test_hashsum.rs | 59 ++++++++++++++++-- tests/fixtures/hashsum/binary.png | Bin 0 -> 8055 bytes .../fixtures/hashsum/binary.sha256.checkfile | 1 + tests/fixtures/hashsum/binary.sha256.expected | 1 + 5 files changed, 71 insertions(+), 13 deletions(-) create mode 100644 tests/fixtures/hashsum/binary.png create mode 100644 tests/fixtures/hashsum/binary.sha256.checkfile create mode 100644 tests/fixtures/hashsum/binary.sha256.expected diff --git a/src/uu/hashsum/src/hashsum.rs b/src/uu/hashsum/src/hashsum.rs index 304938490..90c8c8adf 100644 --- a/src/uu/hashsum/src/hashsum.rs +++ b/src/uu/hashsum/src/hashsum.rs @@ -219,12 +219,19 @@ pub fn uumain(mut args: impl uucore::Args) -> UResult<()> { } if check { - let text_flag = matches.get_flag("text"); - let binary_flag = matches.get_flag("binary"); + // on Windows, allow --binary/--text to be used with --check + // and keep the behavior of defaulting to binary + #[cfg(not(windows))] + let binary = { + let text_flag = matches.get_flag("text"); + let binary_flag = matches.get_flag("binary"); - if binary_flag || text_flag { - return Err(ChecksumError::BinaryTextConflict.into()); - } + if binary_flag || text_flag { + return Err(ChecksumError::BinaryTextConflict.into()); + } + + false + }; // Execute the checksum validation based on the presence of files or the use of stdin // Determine the source of input: a list of files or stdin. @@ -239,7 +246,7 @@ pub fn uumain(mut args: impl uucore::Args) -> UResult<()> { strict, status, warn, - binary_flag, + binary, ignore_missing, quiet, Some(algo.name), @@ -297,11 +304,11 @@ mod options { pub fn uu_app_common() -> Command { #[cfg(windows)] - const BINARY_HELP: &str = "read in binary mode (default)"; + const BINARY_HELP: &str = "read or check in binary mode (default)"; #[cfg(not(windows))] const BINARY_HELP: &str = "read in binary mode"; #[cfg(windows)] - const TEXT_HELP: &str = "read in text mode"; + const TEXT_HELP: &str = "read or check in text mode"; #[cfg(not(windows))] const TEXT_HELP: &str = "read in text mode (default)"; Command::new(uucore::util_name()) diff --git a/tests/by-util/test_hashsum.rs b/tests/by-util/test_hashsum.rs index 533f0b7e7..5965a86ea 100644 --- a/tests/by-util/test_hashsum.rs +++ b/tests/by-util/test_hashsum.rs @@ -19,19 +19,20 @@ macro_rules! test_digest { static BITS_ARG: &'static str = concat!("--bits=", stringify!($size)); 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("hashsum"); assert_eq!(ts.fixtures.read(EXPECTED_FILE), - get_hash!(ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).arg("input.txt").succeeds().no_stderr().stdout_str())); + get_hash!(ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).arg(INPUT_FILE).succeeds().no_stderr().stdout_str())); } #[test] fn test_stdin() { let ts = TestScenario::new("hashsum"); assert_eq!(ts.fixtures.read(EXPECTED_FILE), - get_hash!(ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).pipe_in_fixture("input.txt").succeeds().no_stderr().stdout_str())); + get_hash!(ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).pipe_in_fixture(INPUT_FILE).succeeds().no_stderr().stdout_str())); } #[test] @@ -41,7 +42,7 @@ macro_rules! test_digest { if DIGEST_ARG == "--b3sum" { // Option only available on b3sum assert_eq!(format!("{0}\n{0}\n", ts.fixtures.read(EXPECTED_FILE)), - ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).arg("--no-names").arg("input.txt").arg("-").pipe_in_fixture("input.txt") + ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).arg("--no-names").arg(INPUT_FILE).arg("-").pipe_in_fixture(INPUT_FILE) .succeeds().no_stderr().stdout_str() ); } @@ -50,7 +51,7 @@ macro_rules! test_digest { #[test] fn test_check() { let ts = TestScenario::new("hashsum"); - println!("File content='{}'", ts.fixtures.read("input.txt")); + println!("File content='{}'", ts.fixtures.read(INPUT_FILE)); println!("Check file='{}'", ts.fixtures.read(CHECK_FILE)); ts.ucmd() @@ -64,7 +65,7 @@ macro_rules! test_digest { fn test_zero() { let ts = TestScenario::new("hashsum"); assert_eq!(ts.fixtures.read(EXPECTED_FILE), - get_hash!(ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).arg("--zero").arg("input.txt").succeeds().no_stderr().stdout_str())); + get_hash!(ts.ucmd().arg(DIGEST_ARG).arg(BITS_ARG).arg("--zero").arg(INPUT_FILE).succeeds().no_stderr().stdout_str())); } @@ -1007,3 +1008,51 @@ fn test_check_md5_comment_leading_space() { .stdout_contains("foo: OK") .stderr_contains("WARNING: 1 line is improperly formatted"); } + +#[test] +fn test_sha256_binary() { + let ts = TestScenario::new(util_name!()); + assert_eq!( + ts.fixtures.read("binary.sha256.expected"), + get_hash!(ts + .ucmd() + .arg("--sha256") + .arg("--bits=256") + .arg("binary.png") + .succeeds() + .no_stderr() + .stdout_str()) + ); +} + +#[test] +fn test_sha256_stdin_binary() { + let ts = TestScenario::new(util_name!()); + assert_eq!( + ts.fixtures.read("binary.sha256.expected"), + get_hash!(ts + .ucmd() + .arg("--sha256") + .arg("--bits=256") + .pipe_in_fixture("binary.png") + .succeeds() + .no_stderr() + .stdout_str()) + ); +} + +#[test] +fn test_check_sha256_binary() { + let ts = TestScenario::new(util_name!()); + + ts.ucmd() + .args(&[ + "--sha256", + "--bits=256", + "--check", + "binary.sha256.checkfile", + ]) + .succeeds() + .no_stderr() + .stdout_is("binary.png: OK\n"); +} diff --git a/tests/fixtures/hashsum/binary.png b/tests/fixtures/hashsum/binary.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4161338f200299744af6dff35884ac5c94516b GIT binary patch literal 8055 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 Sw4Q;1fx*+&&t;ucLK6V^nqaB` literal 0 HcmV?d00001 diff --git a/tests/fixtures/hashsum/binary.sha256.checkfile b/tests/fixtures/hashsum/binary.sha256.checkfile new file mode 100644 index 000000000..87fde491a --- /dev/null +++ b/tests/fixtures/hashsum/binary.sha256.checkfile @@ -0,0 +1 @@ +ac10c6d06f343e26875366263d486a1e9f71115b9b80f0565902f79e947dca51 binary.png diff --git a/tests/fixtures/hashsum/binary.sha256.expected b/tests/fixtures/hashsum/binary.sha256.expected new file mode 100644 index 000000000..3003abf46 --- /dev/null +++ b/tests/fixtures/hashsum/binary.sha256.expected @@ -0,0 +1 @@ +ac10c6d06f343e26875366263d486a1e9f71115b9b80f0565902f79e947dca51 \ No newline at end of file