[Libguestfs] [PATCH v7 10/10] Convert all OCaml virt-* tools to use the test harness.

Richard W.M. Jones rjones at redhat.com
Fri Oct 24 13:28:14 UTC 2014


---
 .gitignore                              |  3 +-
 customize/Makefile.am                   | 16 +++------
 customize/test-virt-customize.sh        |  2 +-
 customize/tests.mk                      | 60 +++++++++++++++++++++++++++++++
 generator/tests.ml                      | 32 +++++++++++++++++
 mllib/Makefile.am                       | 30 ++++++++--------
 mllib/tests.mk                          | 64 +++++++++++++++++++++++++++++++++
 resize/Makefile.am                      | 16 +++------
 resize/tests.mk                         | 60 +++++++++++++++++++++++++++++++
 sparsify/Makefile.am                    | 17 +++------
 sparsify/test-virt-sparsify-in-place.sh |  5 ---
 sparsify/tests.mk                       | 61 +++++++++++++++++++++++++++++++
 12 files changed, 306 insertions(+), 60 deletions(-)
 create mode 100644 customize/tests.mk
 create mode 100644 mllib/tests.mk
 create mode 100644 resize/tests.mk
 create mode 100644 sparsify/tests.mk

diff --git a/.gitignore b/.gitignore
index 169a42a..f425bbe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -304,7 +304,8 @@ Makefile.in
 /missing
 /mllib/.depend
 /mllib/common_gettext.ml
-/mllib/common_utils_tests
+/mllib/common_utils_tests.bc
+/mllib/common_utils_tests.opt
 /mllib/config.ml
 /mllib/dummy
 /mllib/libdir.ml
diff --git a/customize/Makefile.am b/customize/Makefile.am
index 39759dc..9a9998a 100644
--- a/customize/Makefile.am
+++ b/customize/Makefile.am
@@ -31,7 +31,8 @@ generator_built = \
 	customize_cmdline.mli \
 	customize_cmdline.ml \
 	customize-options.pod \
-	customize-synopsis.pod
+	customize-synopsis.pod \
+	tests.mk
 
 # Alphabetical order.
 SOURCES = \
@@ -176,17 +177,6 @@ stamp-virt-customize.pod: virt-customize.pod $(top_srcdir)/customize/customize-s
 	  $<
 	touch $@
 
-# Tests.
-
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-if ENABLE_APPLIANCE
-TESTS = test-virt-customize.sh
-endif
-
-check-valgrind:
-	$(MAKE) VG="$(top_builddir)/run @VG@" check
-
 # Dependencies.
 depend: .depend
 
@@ -206,3 +196,5 @@ endif
 DISTCLEANFILES = .depend
 
 .PHONY: depend docs
+
+include $(srcdir)/tests.mk
diff --git a/customize/test-virt-customize.sh b/customize/test-virt-customize.sh
index 979e6f0..2d17a67 100755
--- a/customize/test-virt-customize.sh
+++ b/customize/test-virt-customize.sh
@@ -22,7 +22,7 @@ set -e
 # virt-customize with the -n option doesn't modify the guest.  It ought
 # to be able to customize any of our Linux-like test guests.
 
-for f in ../tests/guests/{debian,fedora,ubuntu}.img; do
+for f in $phonydir/{debian,fedora,ubuntu}.img; do
     # Ignore zero-sized windows.img if ntfs-3g is not installed.
     if [ -s "$f" ]; then
         # Add --no-network so UML works.
diff --git a/customize/tests.mk b/customize/tests.mk
new file mode 100644
index 0000000..d08fc67
--- /dev/null
+++ b/customize/tests.mk
@@ -0,0 +1,60 @@
+# libguestfs generated file
+# WARNING: THIS FILE IS GENERATED FROM:
+#   generator/ *.ml
+# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
+#
+# 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.
+
+localtestsdir = $(alltestsdir)/customize
+
+localtests_SCRIPTS = \
+	test-virt-customize.sh
+
+# 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
+
+EXTRA_DIST += tests.mk
diff --git a/generator/tests.ml b/generator/tests.ml
index 78ceb12..ad0ff19 100644
--- a/generator/tests.ml
+++ b/generator/tests.ml
@@ -488,4 +488,36 @@ let tests = [
       ];
   };
 
+  (* Test tools written in OCaml. *)
+
+  "mllib", {
+    defaults with
+      check_fast = [
+        "common_utils_tests.bc";
+        "common_utils_tests.opt";
+      ];
+  };
+
+  "customize", {
+    defaults with
+      check = [
+        "test-virt-customize.sh"
+      ];
+  };
+
+  "resize", {
+    defaults with
+      check = [
+        "test-virt-resize.pl"
+      ];
+  };
+
+  "sparsify", {
+    defaults with
+      check = [
+        "test-virt-sparsify.sh";
+        "test-virt-sparsify-in-place.sh";
+      ];
+  };
+
 ]
diff --git a/mllib/Makefile.am b/mllib/Makefile.am
index 2ad4eaa..ba0552d 100644
--- a/mllib/Makefile.am
+++ b/mllib/Makefile.am
@@ -17,10 +17,12 @@
 
 include $(top_srcdir)/subdir-rules.mk
 
+generator_built = tests.mk
+
 EXTRA_DIST = \
 	$(filter-out config.ml,$(SOURCES))
 
-CLEANFILES = *~ *.cmi *.cmo *.cmx *.cmxa *.o
+CLEANFILES = *~ *.cmi *.cmo *.cmx *.cmxa *.o *.bc *.opt
 
 # Alphabetical order.
 SOURCES = \
@@ -149,25 +151,19 @@ DEFAULT_INCLUDES = \
 
 # Tests.
 
-check_SCRIPTS = common_utils_tests
-
-if HAVE_OCAMLOPT
-common_utils_tests: common_gettext.cmx tty-c.o tTY.cmx common_utils.cmx common_utils_tests.cmx
-	$(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \
-	  mlguestfs.cmxa -linkpkg $^ -cclib -lncurses -o $@
-else
-common_utils_tests: common_gettext.cmo tty-c.o tTY.cmo common_utils.cmo common_utils_tests.cmo
+common_utils_tests.bc: common_gettext.cmo tty-c.o tTY.cmo common_utils.cmo common_utils_tests.cmo
 	$(OCAMLFIND) ocamlc $(OCAMLCFLAGS) \
 	  mlguestfs.cma -linkpkg $^ -cclib -lncurses -custom -o $@
+if HAVE_OCAMLOPT
+common_utils_tests.opt: common_gettext.cmx tty-c.o tTY.cmx common_utils.cmx common_utils_tests.cmx
+	$(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) \
+	  mlguestfs.cmxa -linkpkg $^ -cclib -lncurses -o $@
+else
+common_utils_tests.opt:
+	echo 'exit 77' > $@
+	chmod 0755 $@
 endif
 
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-TESTS = common_utils_tests
-
-check-valgrind:
-	$(MAKE) VG="$(top_builddir)/run @VG@" check
-
 # Dependencies.
 depend: .depend
 
@@ -187,3 +183,5 @@ endif
 DISTCLEANFILES = .depend
 
 .PHONY: depend docs
+
+include $(srcdir)/tests.mk
diff --git a/mllib/tests.mk b/mllib/tests.mk
new file mode 100644
index 0000000..4459bed
--- /dev/null
+++ b/mllib/tests.mk
@@ -0,0 +1,64 @@
+# libguestfs generated file
+# WARNING: THIS FILE IS GENERATED FROM:
+#   generator/ *.ml
+# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
+#
+# 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.
+
+localtestsdir = $(alltestsdir)/mllib
+
+localtests_SCRIPTS = \
+	common_utils_tests.bc \
+	common_utils_tests.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
diff --git a/resize/Makefile.am b/resize/Makefile.am
index 629fa22..028fcb4 100644
--- a/resize/Makefile.am
+++ b/resize/Makefile.am
@@ -17,6 +17,8 @@
 
 include $(top_srcdir)/subdir-rules.mk
 
+generator_built = tests.mk
+
 EXTRA_DIST = \
 	$(SOURCES) \
 	virt-resize.pod \
@@ -130,18 +132,6 @@ stamp-virt-resize.pod: virt-resize.pod
 
 CLEANFILES += stamp-virt-resize.pod
 
-# Tests.
-
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-TESTS =
-if ENABLE_APPLIANCE
-TESTS += test-virt-resize.pl
-endif
-
-check-valgrind:
-	$(MAKE) VG="$(top_builddir)/run @VG@" check
-
 # Dependencies.
 depend: .depend
 
@@ -161,3 +151,5 @@ endif
 DISTCLEANFILES = .depend
 
 .PHONY: depend docs
+
+include $(srcdir)/tests.mk
diff --git a/resize/tests.mk b/resize/tests.mk
new file mode 100644
index 0000000..0c496d1
--- /dev/null
+++ b/resize/tests.mk
@@ -0,0 +1,60 @@
+# libguestfs generated file
+# WARNING: THIS FILE IS GENERATED FROM:
+#   generator/ *.ml
+# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
+#
+# 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.
+
+localtestsdir = $(alltestsdir)/resize
+
+localtests_SCRIPTS = \
+	test-virt-resize.pl
+
+# 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
+
+EXTRA_DIST += tests.mk
diff --git a/sparsify/Makefile.am b/sparsify/Makefile.am
index a7d4166..d9c68ef 100644
--- a/sparsify/Makefile.am
+++ b/sparsify/Makefile.am
@@ -17,6 +17,8 @@
 
 include $(top_srcdir)/subdir-rules.mk
 
+generator_built = tests.mk
+
 EXTRA_DIST = \
 	$(SOURCES_ML) $(SOURCES_C) \
 	virt-sparsify.pod \
@@ -118,19 +120,6 @@ stamp-virt-sparsify.pod: virt-sparsify.pod
 
 CLEANFILES += stamp-virt-sparsify.pod
 
-# Tests.
-
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-if ENABLE_APPLIANCE
-TESTS = \
-	test-virt-sparsify.sh \
-	test-virt-sparsify-in-place.sh
-endif ENABLE_APPLIANCE
-
-check-valgrind:
-	$(MAKE) VG="$(top_builddir)/run @VG@" check
-
 # Dependencies.
 depend: .depend
 
@@ -150,3 +139,5 @@ endif
 DISTCLEANFILES = .depend
 
 .PHONY: depend docs
+
+include $(srcdir)/tests.mk
diff --git a/sparsify/test-virt-sparsify-in-place.sh b/sparsify/test-virt-sparsify-in-place.sh
index d085032..f9dbf16 100755
--- a/sparsify/test-virt-sparsify-in-place.sh
+++ b/sparsify/test-virt-sparsify-in-place.sh
@@ -19,11 +19,6 @@
 export LANG=C
 set -e
 
-if [ -n "$SKIP_TEST_VIRT_SPARSIFY_IN_PLACE_SH" ]; then
-    echo "$0: skipping test (environment variable set)"
-    exit 77
-fi
-
 if [ "$(guestfish get-backend)" = "uml" ]; then
     echo "$0: skipping test because uml backend does not support discard"
     exit 77
diff --git a/sparsify/tests.mk b/sparsify/tests.mk
new file mode 100644
index 0000000..57ef959
--- /dev/null
+++ b/sparsify/tests.mk
@@ -0,0 +1,61 @@
+# libguestfs generated file
+# WARNING: THIS FILE IS GENERATED FROM:
+#   generator/ *.ml
+# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
+#
+# 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.
+
+localtestsdir = $(alltestsdir)/sparsify
+
+localtests_SCRIPTS = \
+	test-virt-sparsify-in-place.sh \
+	test-virt-sparsify.sh
+
+# 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
+
+EXTRA_DIST += tests.mk
-- 
2.0.4




More information about the Libguestfs mailing list