diff options
author | Richard Jones <rjones@redhat.com> | 2009-11-20 16:32:53 +0000 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2009-11-20 18:03:36 +0000 |
commit | 64de216ac7b6ef94f801e214a989c578f26956e8 (patch) | |
tree | 13b0d54d322e29fe8765488dd7503864c66bbd40 | |
parent | 2d9953097b6d3b71122d444a4550047e97aee009 (diff) | |
download | libguestfs-64de216ac7b6ef94f801e214a989c578f26956e8.tar.gz libguestfs-64de216ac7b6ef94f801e214a989c578f26956e8.tar.xz libguestfs-64de216ac7b6ef94f801e214a989c578f26956e8.zip |
availability: Skip tests when functions are not available.
-rw-r--r-- | capitests/Makefile.am | 15 | ||||
-rwxr-xr-x | src/generator.ml | 26 |
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 |