availability: Skip tests when functions are not available.
authorRichard Jones <rjones@redhat.com>
Fri, 20 Nov 2009 16:32:53 +0000 (16:32 +0000)
committerRichard Jones <rjones@redhat.com>
Fri, 20 Nov 2009 18:03:36 +0000 (18:03 +0000)
capitests/Makefile.am
src/generator.ml

index 74bfab0..023efe4 100644 (file)
@@ -33,26 +33,11 @@ tests_CFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src \
   $(WARN_CFLAGS) $(WERROR_CFLAGS)
 tests_LDADD = $(top_builddir)/src/libguestfs.la
 
-# Old version of e2fsprogs which didn't support UUIDs?
-e2fs_uuid_not_supported :=                                              \
-  $(shell r=1;                                                          \
-    test -x ../initramfs/sbin/mkswap                                    \
-      && ../initramfs/sbin/mkswap --help 2>&1 | grep -sq -- -U          \
-      && r=1;                                                           \
-    echo $$r)
-
 TESTS = tests
 TESTS_ENVIRONMENT = \
        SKIP_TEST_COMMAND=$(shell ldd test-command | grep -sq 'not a dynamic executable' || echo 1) \
        SKIP_TEST_COMMAND_LINES=$(shell ldd test-command | grep -sq 'not a dynamic executable' || echo 1) \
-       SKIP_TEST_ZEROFREE=$(shell test -x ../initramfs/usr/sbin/zerofree || echo 1) \
-       SKIP_TEST_NTFS_3G_PROBE=$(shell test -x ../initramfs/bin/ntfs-3g.probe || echo 1) \
        SKIP_TEST_CHECKSUM_8=$(shell if test `find ../initramfs -name squashfs.ko | wc -l` -eq 0; then echo 1; fi) \
-       SKIP_TEST_MKSWAP_U=$(e2fs_uuid_not_supported) \
-       SKIP_TEST_SWAPON_UUID=$(e2fs_uuid_not_supported) \
-       SKIP_TEST_MKE2JOURNAL_U=$(e2fs_uuid_not_supported) \
-       SKIP_TEST_SCRUB_FILE=$(shell test -x ../initramfs/usr/bin/scrub || echo 1) \
-       SKIP_TEST_SCRUB_DEVICE=$(shell test -x ../initramfs/usr/bin/scrub || echo 1) \
        $(VG)
 
 # Run the tests under valgrind.
index 08817c1..89c1925 100755 (executable)
@@ -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