summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-11-20 16:32:53 +0000
committerRichard Jones <rjones@redhat.com>2009-11-20 18:03:36 +0000
commit64de216ac7b6ef94f801e214a989c578f26956e8 (patch)
tree13b0d54d322e29fe8765488dd7503864c66bbd40
parent2d9953097b6d3b71122d444a4550047e97aee009 (diff)
downloadlibguestfs-64de216ac7b6ef94f801e214a989c578f26956e8.tar.gz
libguestfs-64de216ac7b6ef94f801e214a989c578f26956e8.tar.xz
libguestfs-64de216ac7b6ef94f801e214a989c578f26956e8.zip
availability: Skip tests when functions are not available.
-rw-r--r--capitests/Makefile.am15
-rwxr-xr-xsrc/generator.ml26
2 files changed, 23 insertions, 18 deletions
diff --git a/capitests/Makefile.am b/capitests/Makefile.am
index 74bfab0c..023efe4b 100644
--- a/capitests/Makefile.am
+++ b/capitests/Makefile.am
@@ -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.
diff --git a/src/generator.ml b/src/generator.ml
index 08817c12..89c1925a 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