upstream: https://github.com/mirage/mirage-crypto

refactor(crowbar): Alcotest-style API with suite exports and grouped run

- Change `run` signature to `string -> (string * test_case list) list -> unit`
matching Alcotest's grouping convention
- Fix `_name` bug: pass the name through to Alcotest.run_with_args
- Each fuzz module now exports `let suite = ("name", [test_case ...])`
- Entry points (fuzz.ml) collect suites: `Crowbar.run "pkg" [Fuzz_X.suite]`
- Remove stale `add_test`/`suite` API, keep only `test_case`/`run`
- Remove `let run () = ()` from fuzz_common.ml files
- Update merlint E725 rule to match new `let suite = ("name", ...)` pattern
- Update E725 test fixtures and expected output

+17 -13
+17 -13
fuzz/fuzz_crypto.ml
··· 130 130 | Some decrypted -> check_eq ~pp:Format.pp_print_string plaintext decrypted 131 131 | None -> fail "ChaCha20-Poly1305 decryption failed" 132 132 133 - let () = 134 - add_test ~name:"crypto: aes ecb roundtrip" [ bytes; bytes ] 135 - test_aes_ecb_roundtrip; 136 - add_test ~name:"crypto: aes cbc roundtrip" [ bytes; bytes; bytes ] 137 - test_aes_cbc_roundtrip; 138 - add_test ~name:"crypto: aes ctr roundtrip" [ bytes; bytes; bytes ] 139 - test_aes_ctr_roundtrip; 140 - add_test ~name:"crypto: aes gcm roundtrip" [ bytes; bytes; bytes ] 141 - test_aes_gcm_roundtrip; 142 - add_test ~name:"crypto: aes ccm roundtrip" [ bytes; bytes; bytes ] 143 - test_aes_ccm_roundtrip; 144 - add_test ~name:"crypto: chacha20-poly1305 roundtrip" [ bytes; bytes; bytes ] 145 - test_chacha20_poly1305_roundtrip 133 + let suite = 134 + ( "crypto", 135 + [ 136 + test_case "aes ecb roundtrip" [ bytes; bytes ] test_aes_ecb_roundtrip; 137 + test_case "aes cbc roundtrip" [ bytes; bytes; bytes ] 138 + test_aes_cbc_roundtrip; 139 + test_case "aes ctr roundtrip" [ bytes; bytes; bytes ] 140 + test_aes_ctr_roundtrip; 141 + test_case "aes gcm roundtrip" [ bytes; bytes; bytes ] 142 + test_aes_gcm_roundtrip; 143 + test_case "aes ccm roundtrip" [ bytes; bytes; bytes ] 144 + test_aes_ccm_roundtrip; 145 + test_case "chacha20-poly1305 roundtrip" [ bytes; bytes; bytes ] 146 + test_chacha20_poly1305_roundtrip; 147 + ] ) 148 + 149 + let () = run "crypto" [ suite ]