diff --git a/tests/by-util/test_cksum.rs b/tests/by-util/test_cksum.rs index a331f5b80..e94303a75 100644 --- a/tests/by-util/test_cksum.rs +++ b/tests/by-util/test_cksum.rs @@ -433,6 +433,146 @@ fn test_check_untagged_sha2_multiple_files() { } } +#[test] +fn test_sha3_wrong_length() { + for l in [0, 13, 819_111_123] { + new_ucmd!() + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .arg("lorem_ipsum.txt") + .fails_with_code(1) + .no_stdout() + .stderr_contains(format!("invalid length: '{l}'")); + } +} + +#[test] +fn test_sha3_single_file() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .arg("lorem_ipsum.txt") + .succeeds() + .stdout_is_fixture(format!("sha3_{l}_single_file.expected")); + } +} + +#[test] +fn test_sha3_multiple_files() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .arg("lorem_ipsum.txt") + .arg("alice_in_wonderland.txt") + .succeeds() + .stdout_is_fixture(format!("sha3_{l}_multiple_files.expected")); + } +} + +#[test] +fn test_sha3_stdin() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .pipe_in_fixture("lorem_ipsum.txt") + .succeeds() + .stdout_is_fixture(format!("sha3_{l}_stdin.expected")); + } +} + +#[test] +fn test_untagged_sha3_single_file() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--untagged") + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .arg("lorem_ipsum.txt") + .succeeds() + .stdout_is_fixture(format!("untagged/sha3_{l}_single_file.expected")); + } +} + +#[test] +fn test_untagged_sha3_multiple_files() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--untagged") + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .arg("lorem_ipsum.txt") + .arg("alice_in_wonderland.txt") + .succeeds() + .stdout_is_fixture(format!("untagged/sha3_{l}_multiple_files.expected")); + } +} + +#[test] +fn test_untagged_sha3_stdin() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--untagged") + .arg("--algorithm=sha3") + .arg(format!("--length={l}")) + .pipe_in_fixture("lorem_ipsum.txt") + .succeeds() + .stdout_is_fixture(format!("untagged/sha3_{l}_stdin.expected")); + } +} + +#[test] +fn test_check_tagged_sha3_single_file() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--check") + .arg(format!("sha3_{l}_single_file.expected")) + .succeeds() + .stdout_is("lorem_ipsum.txt: OK\n"); + } +} + +#[test] +fn test_check_tagged_sha3_multiple_files() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--check") + .arg(format!("sha3_{l}_multiple_files.expected")) + .succeeds() + .stdout_contains("lorem_ipsum.txt: OK\n") + .stdout_contains("alice_in_wonderland.txt: OK\n"); + } +} + +// When checking sha3 in untagged mode, the length is automatically deduced +// from the length of the digest. +#[test] +fn test_check_untagged_sha3_single_file() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--check") + .arg("--algorithm=sha3") + .arg(format!("untagged/sha3_{l}_single_file.expected")) + .succeeds() + .stdout_is("lorem_ipsum.txt: OK\n"); + } +} + +#[test] +fn test_check_untagged_sha3_multiple_files() { + for l in SHA_LENGTHS { + new_ucmd!() + .arg("--check") + .arg("--algorithm=sha3") + .arg(format!("untagged/sha3_{l}_multiple_files.expected")) + .succeeds() + .stdout_contains("lorem_ipsum.txt: OK\n") + .stdout_contains("alice_in_wonderland.txt: OK\n"); + } +} + #[test] fn test_check_algo() { for algo in ["bsd", "sysv", "crc", "crc32b"] { diff --git a/tests/fixtures/cksum/sha3_224_multiple_files.expected b/tests/fixtures/cksum/sha3_224_multiple_files.expected new file mode 100644 index 000000000..f5671f684 --- /dev/null +++ b/tests/fixtures/cksum/sha3_224_multiple_files.expected @@ -0,0 +1,2 @@ +SHA3-224 (lorem_ipsum.txt) = 00cf719da146d5f51f8969cb518aa2cb89dae71e0aad979b30398f13 +SHA3-224 (alice_in_wonderland.txt) = 33882bd6f47b47648950b4d6c606240c257eeae73e67b96610fd092c diff --git a/tests/fixtures/cksum/sha3_224_single_file.expected b/tests/fixtures/cksum/sha3_224_single_file.expected new file mode 100644 index 000000000..1944f173c --- /dev/null +++ b/tests/fixtures/cksum/sha3_224_single_file.expected @@ -0,0 +1 @@ +SHA3-224 (lorem_ipsum.txt) = 00cf719da146d5f51f8969cb518aa2cb89dae71e0aad979b30398f13 diff --git a/tests/fixtures/cksum/sha3_224_stdin.expected b/tests/fixtures/cksum/sha3_224_stdin.expected new file mode 100644 index 000000000..a0f844909 --- /dev/null +++ b/tests/fixtures/cksum/sha3_224_stdin.expected @@ -0,0 +1 @@ +SHA3-224 (-) = 00cf719da146d5f51f8969cb518aa2cb89dae71e0aad979b30398f13 diff --git a/tests/fixtures/cksum/sha3_256_multiple_files.expected b/tests/fixtures/cksum/sha3_256_multiple_files.expected new file mode 100644 index 000000000..1e488167e --- /dev/null +++ b/tests/fixtures/cksum/sha3_256_multiple_files.expected @@ -0,0 +1,2 @@ +SHA3-256 (lorem_ipsum.txt) = c9b081db1c20bdb4d8f376f45b3fb412b48c75932451d13dd79bea61e7bddbe4 +SHA3-256 (alice_in_wonderland.txt) = 507e920028b617afd342fdd0da3096237d34e33e2490c38a743bf628124803ce diff --git a/tests/fixtures/cksum/sha3_256_single_file.expected b/tests/fixtures/cksum/sha3_256_single_file.expected new file mode 100644 index 000000000..86ac8a85b --- /dev/null +++ b/tests/fixtures/cksum/sha3_256_single_file.expected @@ -0,0 +1 @@ +SHA3-256 (lorem_ipsum.txt) = c9b081db1c20bdb4d8f376f45b3fb412b48c75932451d13dd79bea61e7bddbe4 diff --git a/tests/fixtures/cksum/sha3_256_stdin.expected b/tests/fixtures/cksum/sha3_256_stdin.expected new file mode 100644 index 000000000..985f93225 --- /dev/null +++ b/tests/fixtures/cksum/sha3_256_stdin.expected @@ -0,0 +1 @@ +SHA3-256 (-) = c9b081db1c20bdb4d8f376f45b3fb412b48c75932451d13dd79bea61e7bddbe4 diff --git a/tests/fixtures/cksum/sha3_384_multiple_files.expected b/tests/fixtures/cksum/sha3_384_multiple_files.expected new file mode 100644 index 000000000..5d04e8dee --- /dev/null +++ b/tests/fixtures/cksum/sha3_384_multiple_files.expected @@ -0,0 +1,2 @@ +SHA3-384 (lorem_ipsum.txt) = 12e0dc8c08c0f84c5facbe95ece4e0b568b3b9fbe7dbd1a6751a118c2997aa70a78123cb3d6858dc31d353fc6b874bbe +SHA3-384 (alice_in_wonderland.txt) = d999e51e60b98da41060c287f71592517554addc14b9d27cac3935b8b312fb1e3ffad2730a9cfe855cf0fdcbce6990c6 diff --git a/tests/fixtures/cksum/sha3_384_single_file.expected b/tests/fixtures/cksum/sha3_384_single_file.expected new file mode 100644 index 000000000..16d9eb047 --- /dev/null +++ b/tests/fixtures/cksum/sha3_384_single_file.expected @@ -0,0 +1 @@ +SHA3-384 (lorem_ipsum.txt) = 12e0dc8c08c0f84c5facbe95ece4e0b568b3b9fbe7dbd1a6751a118c2997aa70a78123cb3d6858dc31d353fc6b874bbe diff --git a/tests/fixtures/cksum/sha3_384_stdin.expected b/tests/fixtures/cksum/sha3_384_stdin.expected new file mode 100644 index 000000000..e96139e3e --- /dev/null +++ b/tests/fixtures/cksum/sha3_384_stdin.expected @@ -0,0 +1 @@ +SHA3-384 (-) = 12e0dc8c08c0f84c5facbe95ece4e0b568b3b9fbe7dbd1a6751a118c2997aa70a78123cb3d6858dc31d353fc6b874bbe diff --git a/tests/fixtures/cksum/sha3_512_multiple_files.expected b/tests/fixtures/cksum/sha3_512_multiple_files.expected new file mode 100644 index 000000000..adb0a71e8 --- /dev/null +++ b/tests/fixtures/cksum/sha3_512_multiple_files.expected @@ -0,0 +1,2 @@ +SHA3-512 (lorem_ipsum.txt) = 77f7bb7e1827d7735dd1fd8bc4f4fa3ae1168a1529118c74b18f9abe69a8aecfb60fff0ecec17d2860af90e257e4fbd90048978c47fdda94f56b2ffa1d06448f +SHA3-512 (alice_in_wonderland.txt) = 029486dea9b2bc8a2c90d852982c3a5297e626ed31a956443c6cc4794874bf4fdca76006bacc407bc101c09f85ecb3cea468c17bdfe3ad0ccff03edd786e07a8 diff --git a/tests/fixtures/cksum/sha3_512_single_file.expected b/tests/fixtures/cksum/sha3_512_single_file.expected new file mode 100644 index 000000000..b1af502b1 --- /dev/null +++ b/tests/fixtures/cksum/sha3_512_single_file.expected @@ -0,0 +1 @@ +SHA3-512 (lorem_ipsum.txt) = 77f7bb7e1827d7735dd1fd8bc4f4fa3ae1168a1529118c74b18f9abe69a8aecfb60fff0ecec17d2860af90e257e4fbd90048978c47fdda94f56b2ffa1d06448f diff --git a/tests/fixtures/cksum/sha3_512_stdin.expected b/tests/fixtures/cksum/sha3_512_stdin.expected new file mode 100644 index 000000000..9cb103cfe --- /dev/null +++ b/tests/fixtures/cksum/sha3_512_stdin.expected @@ -0,0 +1 @@ +SHA3-512 (-) = 77f7bb7e1827d7735dd1fd8bc4f4fa3ae1168a1529118c74b18f9abe69a8aecfb60fff0ecec17d2860af90e257e4fbd90048978c47fdda94f56b2ffa1d06448f diff --git a/tests/fixtures/cksum/untagged/sha3_224_multiple_files.expected b/tests/fixtures/cksum/untagged/sha3_224_multiple_files.expected new file mode 100644 index 000000000..282be42ab --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_224_multiple_files.expected @@ -0,0 +1,2 @@ +00cf719da146d5f51f8969cb518aa2cb89dae71e0aad979b30398f13 lorem_ipsum.txt +33882bd6f47b47648950b4d6c606240c257eeae73e67b96610fd092c alice_in_wonderland.txt diff --git a/tests/fixtures/cksum/untagged/sha3_224_single_file.expected b/tests/fixtures/cksum/untagged/sha3_224_single_file.expected new file mode 100644 index 000000000..17c109ce4 --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_224_single_file.expected @@ -0,0 +1 @@ +00cf719da146d5f51f8969cb518aa2cb89dae71e0aad979b30398f13 lorem_ipsum.txt diff --git a/tests/fixtures/cksum/untagged/sha3_224_stdin.expected b/tests/fixtures/cksum/untagged/sha3_224_stdin.expected new file mode 100644 index 000000000..4dfe480ec --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_224_stdin.expected @@ -0,0 +1 @@ +00cf719da146d5f51f8969cb518aa2cb89dae71e0aad979b30398f13 - diff --git a/tests/fixtures/cksum/untagged/sha3_256_multiple_files.expected b/tests/fixtures/cksum/untagged/sha3_256_multiple_files.expected new file mode 100644 index 000000000..2c33a9b2c --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_256_multiple_files.expected @@ -0,0 +1,2 @@ +c9b081db1c20bdb4d8f376f45b3fb412b48c75932451d13dd79bea61e7bddbe4 lorem_ipsum.txt +507e920028b617afd342fdd0da3096237d34e33e2490c38a743bf628124803ce alice_in_wonderland.txt diff --git a/tests/fixtures/cksum/untagged/sha3_256_single_file.expected b/tests/fixtures/cksum/untagged/sha3_256_single_file.expected new file mode 100644 index 000000000..5e250eb9b --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_256_single_file.expected @@ -0,0 +1 @@ +c9b081db1c20bdb4d8f376f45b3fb412b48c75932451d13dd79bea61e7bddbe4 lorem_ipsum.txt diff --git a/tests/fixtures/cksum/untagged/sha3_256_stdin.expected b/tests/fixtures/cksum/untagged/sha3_256_stdin.expected new file mode 100644 index 000000000..3d612bf21 --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_256_stdin.expected @@ -0,0 +1 @@ +c9b081db1c20bdb4d8f376f45b3fb412b48c75932451d13dd79bea61e7bddbe4 - diff --git a/tests/fixtures/cksum/untagged/sha3_384_multiple_files.expected b/tests/fixtures/cksum/untagged/sha3_384_multiple_files.expected new file mode 100644 index 000000000..91ee0cfa8 --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_384_multiple_files.expected @@ -0,0 +1,2 @@ +12e0dc8c08c0f84c5facbe95ece4e0b568b3b9fbe7dbd1a6751a118c2997aa70a78123cb3d6858dc31d353fc6b874bbe lorem_ipsum.txt +d999e51e60b98da41060c287f71592517554addc14b9d27cac3935b8b312fb1e3ffad2730a9cfe855cf0fdcbce6990c6 alice_in_wonderland.txt diff --git a/tests/fixtures/cksum/untagged/sha3_384_single_file.expected b/tests/fixtures/cksum/untagged/sha3_384_single_file.expected new file mode 100644 index 000000000..ae620394d --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_384_single_file.expected @@ -0,0 +1 @@ +12e0dc8c08c0f84c5facbe95ece4e0b568b3b9fbe7dbd1a6751a118c2997aa70a78123cb3d6858dc31d353fc6b874bbe lorem_ipsum.txt diff --git a/tests/fixtures/cksum/untagged/sha3_384_stdin.expected b/tests/fixtures/cksum/untagged/sha3_384_stdin.expected new file mode 100644 index 000000000..9f5f7ca07 --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_384_stdin.expected @@ -0,0 +1 @@ +12e0dc8c08c0f84c5facbe95ece4e0b568b3b9fbe7dbd1a6751a118c2997aa70a78123cb3d6858dc31d353fc6b874bbe - diff --git a/tests/fixtures/cksum/untagged/sha3_512_multiple_files.expected b/tests/fixtures/cksum/untagged/sha3_512_multiple_files.expected new file mode 100644 index 000000000..33121a5fd --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_512_multiple_files.expected @@ -0,0 +1,2 @@ +77f7bb7e1827d7735dd1fd8bc4f4fa3ae1168a1529118c74b18f9abe69a8aecfb60fff0ecec17d2860af90e257e4fbd90048978c47fdda94f56b2ffa1d06448f lorem_ipsum.txt +029486dea9b2bc8a2c90d852982c3a5297e626ed31a956443c6cc4794874bf4fdca76006bacc407bc101c09f85ecb3cea468c17bdfe3ad0ccff03edd786e07a8 alice_in_wonderland.txt diff --git a/tests/fixtures/cksum/untagged/sha3_512_single_file.expected b/tests/fixtures/cksum/untagged/sha3_512_single_file.expected new file mode 100644 index 000000000..edece7f36 --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_512_single_file.expected @@ -0,0 +1 @@ +77f7bb7e1827d7735dd1fd8bc4f4fa3ae1168a1529118c74b18f9abe69a8aecfb60fff0ecec17d2860af90e257e4fbd90048978c47fdda94f56b2ffa1d06448f lorem_ipsum.txt diff --git a/tests/fixtures/cksum/untagged/sha3_512_stdin.expected b/tests/fixtures/cksum/untagged/sha3_512_stdin.expected new file mode 100644 index 000000000..57194c3ed --- /dev/null +++ b/tests/fixtures/cksum/untagged/sha3_512_stdin.expected @@ -0,0 +1 @@ +77f7bb7e1827d7735dd1fd8bc4f4fa3ae1168a1529118c74b18f9abe69a8aecfb60fff0ecec17d2860af90e257e4fbd90048978c47fdda94f56b2ffa1d06448f -