diff --git a/generator/actions.ml b/generator/actions.ml index df68dc79f..541711f18 100644 --- a/generator/actions.ml +++ b/generator/actions.ml @@ -7823,9 +7823,9 @@ types (see C)." }; style = RString "checksum", [String "csumtype"; Device "device"], []; proc_nr = Some 237; tests = [ - InitISOFS, Always, TestOutputFileMD5 ( + InitISOFS, Always, TestResult ( [["checksum_device"; "md5"; "/dev/sdd"]], - "../data/test.iso") + "check_file_md5 (ret, \"../data/test.iso\") == 0") ]; shortdesc = "compute MD5, SHAx or CRC checksum of the contents of a device"; longdesc = "\ diff --git a/generator/tests_c_api.ml b/generator/tests_c_api.ml index c379d7c47..1b92ea664 100644 --- a/generator/tests_c_api.ml +++ b/generator/tests_c_api.ml @@ -173,6 +173,22 @@ md5sum (const char *filename, char *result) result[32] = '\\0'; } +/* Compare MD5 has to expected hash of a file. */ +static int +check_file_md5 (const char *ret, const char *filename) +{ + char expected[33]; + + md5sum (filename, expected); + if (STRNEQ (ret, expected)) { + fprintf (stderr, \"test failed: MD5 returned (%%s) does not match MD5 of file %%s (%%s)\\n\", + ret, filename, expected); + return -1; + } + + return 0; +} + /* Return the value for a key in a hashtable. * Note: the return value is part of the hash and should not be freed. */ @@ -649,19 +665,6 @@ and generate_one_test_body name i test_name init test = in List.iter (generate_test_command_call test_name) seq; generate_test_command_call ~test test_name last - | TestOutputFileMD5 (seq, filename) -> - pr " /* TestOutputFileMD5 for %s (%d) */\n" name i; - pr " char expected[33];\n"; - pr " md5sum (\"%s\", expected);\n" filename; - let seq, last = get_seq_last seq in - let test ret = - pr " if (STRNEQ (%s, expected)) {\n" ret; - pr " fprintf (stderr, \"%%s: expected \\\"%%s\\\" but got \\\"%%s\\\"\\n\", \"%s\", expected, %s);\n" test_name ret; - pr " return -1;\n"; - pr " }\n" - in - List.iter (generate_test_command_call test_name) seq; - generate_test_command_call ~test test_name last | TestOutputHashtable (seq, fields) -> pr " /* TestOutputHashtable for %s (%d) */\n" name i; pr " const char *key, *expected, *value;\n"; diff --git a/generator/types.ml b/generator/types.ml index cca20ff22..7ad2323e7 100644 --- a/generator/types.ml +++ b/generator/types.ml @@ -238,7 +238,6 @@ and test = * be replaced with 'TestResult'. *) | TestOutputBuffer of seq * string - | TestOutputFileMD5 of seq * string | TestOutputHashtable of seq * (string * string) list (* Test prerequisites. *) diff --git a/generator/utils.ml b/generator/utils.ml index b8aa520ee..37f8af841 100644 --- a/generator/utils.ml +++ b/generator/utils.ml @@ -267,7 +267,6 @@ let seq_of_test = function | TestResultFalse s | TestLastFail s | TestOutputBuffer (s, _) - | TestOutputFileMD5 (s, _) | TestOutputHashtable (s, _) -> s let c_quote str =