---
generator/tests.ml | 37 +++++++++++++++++++++
generator/tests_mk.ml | 14 ++++++--
ocaml/Makefile.am | 57 ++++++---------------------------
ocaml/run-bindtests | 27 ----------------
ocaml/run-bindtests.sh | 26 +++++++++++++++
ocaml/tests.mk | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 170 insertions(+), 78 deletions(-)
delete mode 100755 ocaml/run-bindtests
create mode 100755 ocaml/run-bindtests.sh
create mode 100644 ocaml/tests.mk
diff --git a/generator/tests.ml b/generator/tests.ml
index c211344..4ed53e8 100644
--- a/generator/tests.ml
+++ b/generator/tests.ml
@@ -479,4 +479,41 @@ let tests = [
]
};
+ (* Test language bindings. *)
+
+ "ocaml", {
+ defaults with
+ check_fast = [
+ "run-bindtests.sh";
+ "t/guestfs_010_load.bc";
+ "t/guestfs_020_create.bc";
+ "t/guestfs_030_create_flags.bc";
+ "t/guestfs_040_create_multiple.bc";
+ "t/guestfs_050_handle_properties.bc";
+ "t/guestfs_060_explicit_close.bc";
+ "t/guestfs_070_optargs.bc";
+ "t/guestfs_410_close_event.bc";
+ "t/guestfs_420_log_messages.bc";
+ "t/guestfs_010_load.opt";
+ "t/guestfs_020_create.opt";
+ "t/guestfs_030_create_flags.opt";
+ "t/guestfs_040_create_multiple.opt";
+ "t/guestfs_050_handle_properties.opt";
+ "t/guestfs_060_explicit_close.opt";
+ "t/guestfs_070_optargs.opt";
+ "t/guestfs_410_close_event.opt";
+ "t/guestfs_420_log_messages.opt"
+ ];
+ check = [
+ "t/guestfs_100_launch.bc";
+ "t/guestfs_430_progress_messages.bc";
+ "t/guestfs_100_launch.opt";
+ "t/guestfs_430_progress_messages.opt";
+ ];
+ check_scripts = [
+ "bindtests.bc";
+ "bindtests.opt";
+ ];
+ };
+
]
diff --git a/generator/tests_mk.ml b/generator/tests_mk.ml
index e2705ce..7e98297 100644
--- a/generator/tests_mk.ml
+++ b/generator/tests_mk.ml
@@ -39,13 +39,21 @@ let generate_tests_mk dir tests () =
pr "\n";
);
- (* Only add *.sh and *.pl to localtests_SCRIPTS. Others are added to
- * localtests_PROGRAMS.
+ (* Certain extensions are treated as scripts and added to
+ * localtests_SCRIPTS. Others are added to localtests_PROGRAMS.
*)
+ let scripts_extensions = [
+ ".bc"; ".opt"; (* for OCaml *)
+ ".pl";
+ ".sh"
+ ] in
+
let test_scripts, test_programs =
List.partition (
fun file ->
- Filename.check_suffix file ".sh" || Filename.check_suffix file
".pl"
+ List.exists
+ (fun extn -> Filename.check_suffix file extn)
+ scripts_extensions
) (tests.check @ tests.check_fast @ tests.check_slow
@ tests.check_local_guests) in
diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am
index db13a8f..74320c6 100644
--- a/ocaml/Makefile.am
+++ b/ocaml/Makefile.am
@@ -21,7 +21,8 @@ generator_built = \
guestfs.mli \
guestfs.ml \
guestfs-c-actions.c \
- $(srcdir)/bindtests.ml
+ $(srcdir)/bindtests.ml \
+ tests.mk
EXTRA_DIST = \
$(generator_built) \
@@ -29,7 +30,7 @@ EXTRA_DIST = \
guestfs-c.c guestfs-c.h \
html/.gitignore \
META.in \
- run-bindtests \
+ run-bindtests.sh \
t/*.ml
CLEANFILES = *.annot *.cmi *.cmo *.cmx *.cma *.cmxa *.o *.a *.so
@@ -100,50 +101,9 @@ html/index.html: $(srcdir)/guestfs.mli $(srcdir)/guestfs.ml
endif
-TESTS_ENVIRONMENT = $(top_builddir)/run --test $(VG)
+# Tests.
-test_progs_bc = \
- t/guestfs_010_load.bc \
- t/guestfs_020_create.bc \
- t/guestfs_030_create_flags.bc \
- t/guestfs_040_create_multiple.bc \
- t/guestfs_050_handle_properties.bc \
- t/guestfs_060_explicit_close.bc \
- t/guestfs_070_optargs.bc \
- t/guestfs_410_close_event.bc \
- t/guestfs_420_log_messages.bc
-
-test_progs_opt = \
- t/guestfs_010_load.opt \
- t/guestfs_020_create.opt \
- t/guestfs_030_create_flags.opt \
- t/guestfs_040_create_multiple.opt \
- t/guestfs_050_handle_properties.opt \
- t/guestfs_060_explicit_close.opt \
- t/guestfs_070_optargs.opt \
- t/guestfs_410_close_event.opt \
- t/guestfs_420_log_messages.opt
-
-if ENABLE_APPLIANCE
-test_progs_bc += \
- t/guestfs_100_launch.bc \
- t/guestfs_430_progress_messages.bc
-test_progs_opt += \
- t/guestfs_100_launch.opt \
- t/guestfs_430_progress_messages.opt
-endif
-
-test_progs_all = $(test_progs_bc)
-if HAVE_OCAMLOPT
-test_progs_all += $(test_progs_opt)
-endif
-
-TESTS = run-bindtests $(test_progs_all)
-
-noinst_DATA += bindtests.bc $(test_progs_all)
-if HAVE_OCAMLOPT
-noinst_DATA += bindtests.opt
-endif
+include $(srcdir)/tests.mk
%.bc: %.cmo mlguestfs.cma
$(top_builddir)/libtool -dlopen $(top_builddir)/src/.libs/libguestfs.la --mode=execute
\
@@ -152,11 +112,12 @@ endif
if HAVE_OCAMLOPT
%.opt: %.cmx mlguestfs.cmxa
$(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) -cclib -L$(top_builddir)/src/.libs -I . -package
unix -linkpkg mlguestfs.cmxa $< -o $@
+else
+%.opt:
+ echo 'exit 77' > $@
+ chmod 0755 $@
endif
-check-valgrind:
- $(MAKE) VG="$(top_builddir)/run @VG@" TESTS="$(test_progs_all)"
check
-
# Dependencies.
%.cmi: %.mli
$(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -package unix -c $< -o $@
diff --git a/ocaml/run-bindtests b/ocaml/run-bindtests
deleted file mode 100755
index 1fa54ec..0000000
--- a/ocaml/run-bindtests
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh -
-# libguestfs OCaml bindings
-# Copyright (C) 2009 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-set -e
-
-./bindtests.bc > bindtests.tmp
-diff -u $srcdir/../bindtests bindtests.tmp
-
-test -x ./bindtests.opt || exit 0
-
-./bindtests.opt > bindtests.tmp
-diff -u $srcdir/../bindtests bindtests.tmp
diff --git a/ocaml/run-bindtests.sh b/ocaml/run-bindtests.sh
new file mode 100755
index 0000000..dfeb61a
--- /dev/null
+++ b/ocaml/run-bindtests.sh
@@ -0,0 +1,26 @@
+#!/bin/sh -
+# libguestfs OCaml bindings
+# Copyright (C) 2009-2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+$builddir/bindtests.bc > bindtests.tmp
+diff -u $srcdir/../bindtests bindtests.tmp
+
+# Note next command will exit 77 if !HAVE_OCAMLOPT.
+$builddir/bindtests.opt > bindtests.tmp
+diff -u $srcdir/../bindtests bindtests.tmp
diff --git a/ocaml/tests.mk b/ocaml/tests.mk
new file mode 100644
index 0000000..817430b
--- /dev/null
+++ b/ocaml/tests.mk
@@ -0,0 +1,87 @@
+# libguestfs generated file
+# WARNING: THIS FILE IS GENERATED FROM:
+# generator/ *.ml
+# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
+#
+# Copyright (C) 2009-2015 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+localtestsdir = $(alltestsdir)/ocaml
+
+localtests_SCRIPTS = \
+ bindtests.bc \
+ bindtests.opt \
+ run-bindtests.sh \
+ t/guestfs_010_load.bc \
+ t/guestfs_010_load.opt \
+ t/guestfs_020_create.bc \
+ t/guestfs_020_create.opt \
+ t/guestfs_030_create_flags.bc \
+ t/guestfs_030_create_flags.opt \
+ t/guestfs_040_create_multiple.bc \
+ t/guestfs_040_create_multiple.opt \
+ t/guestfs_050_handle_properties.bc \
+ t/guestfs_050_handle_properties.opt \
+ t/guestfs_060_explicit_close.bc \
+ t/guestfs_060_explicit_close.opt \
+ t/guestfs_070_optargs.bc \
+ t/guestfs_070_optargs.opt \
+ t/guestfs_100_launch.bc \
+ t/guestfs_100_launch.opt \
+ t/guestfs_410_close_event.bc \
+ t/guestfs_410_close_event.opt \
+ t/guestfs_420_log_messages.bc \
+ t/guestfs_420_log_messages.opt \
+ t/guestfs_430_progress_messages.bc \
+ t/guestfs_430_progress_messages.opt
+
+# Note that we cannot create a simple 'check:' target since
+# automake will (silently) overrule it, so we do this instead:
+
+TESTS_ENVIRONMENT = $(top_builddir)/run
+TESTS = $(top_builddir)/test-harness
+
+check-valgrind:
+ $(top_builddir)/run $(top_builddir)/test-harness --valgrind
+
+check-direct:
+ $(top_builddir)/run $(top_builddir)/test-harness --direct
+
+check-valgrind-direct:
+ $(top_builddir)/run $(top_builddir)/test-harness --valgrind --direct
+
+check-libvirt:
+ $(top_builddir)/run $(top_builddir)/test-harness --libvirt
+
+check-valgrind-libvirt:
+ $(top_builddir)/run $(top_builddir)/test-harness --valgrind --libvirt
+
+check-uml:
+ $(top_builddir)/run $(top_builddir)/test-harness --uml
+
+check-valgrind-uml:
+ $(top_builddir)/run $(top_builddir)/test-harness --valgrind --uml
+
+check-with-upstream-qemu:
+ $(top_builddir)/run $(top_builddir)/test-harness --upstream-qemu
+
+check-with-upstream-libvirt:
+ $(top_builddir)/run $(top_builddir)/test-harness --upstream-libvirt
+
+check-fast:
+ $(top_builddir)/run $(top_builddir)/test-harness --fast
+
+EXTRA_DIST += tests.mk
--
2.5.0