X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fgenerator.ml;h=89c1925ae98bfedbc19eac69d22bdb72cc5379a6;hb=1b60344e672e4fc233d7fe6b8ecfcda46a40f4d5;hp=08817c127920e10a6217037199a1a35de791fc3d;hpb=2d9953097b6d3b71122d444a4550047e97aee009;p=libguestfs.git diff --git a/src/generator.ml b/src/generator.ml index 08817c1..89c1925 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -6076,8 +6076,8 @@ static void print_table (char const *const *argv) *) let test_names = List.map ( - fun (name, _, _, _, tests, _, _) -> - mapi (generate_one_test name) tests + fun (name, _, _, flags, tests, _, _) -> + mapi (generate_one_test name flags) tests ) (List.rev all_functions) in let test_names = List.concat test_names in let nr_tests = List.length test_names in @@ -6235,7 +6235,7 @@ int main (int argc, char *argv[]) pr " exit (EXIT_SUCCESS);\n"; pr "}\n" -and generate_one_test name i (init, prereq, test) = +and generate_one_test name flags i (init, prereq, test) = let test_name = sprintf "test_%s_%d" name i in pr "\ @@ -6275,6 +6275,26 @@ static int %s (void) " test_name test_name test_name; + (* Optional functions should only be tested if the relevant + * support is available in the daemon. + *) + List.iter ( + function + | Optional group -> + pr " {\n"; + pr " const char *groups[] = { \"%s\", NULL };\n" group; + pr " int r;\n"; + pr " suppress_error = 1;\n"; + pr " r = guestfs_available (g, (char **) groups);\n"; + pr " suppress_error = 0;\n"; + pr " if (r == -1) {\n"; + pr " printf (\" %%s skipped (reason: group %%s not available in daemon)\\n\", \"%s\", groups[0]);\n" test_name; + pr " return 0;\n"; + pr " }\n"; + pr " }\n"; + | _ -> () + ) flags; + (match prereq with | Disabled -> pr " printf (\" %%s skipped (reason: test disabled in generator)\\n\", \"%s\");\n" test_name