---
.gitignore | 4 +-
builder/Makefile.am | 33 ++-----
builder/test-virt-builder-list.sh | 2 -
builder/test-virt-builder.sh | 22 ++---
builder/test-virt-index-validate.sh | 8 +-
builder/tests.mk | 77 +++++++++++++++
builder/website/Makefile.am | 10 +-
builder/website/tests.mk | 67 +++++++++++++
configure.ac | 2 +
customize/Makefile.am | 16 +---
customize/test-virt-customize.sh | 2 +-
customize/tests.mk | 60 ++++++++++++
generator/tests.ml | 138 +++++++++++++++++++++++++++
mllib/Makefile.am | 17 +---
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 ++++++++++++
sysprep/Makefile.am | 29 ++----
sysprep/script1.sh | 2 +-
sysprep/script2.sh | 2 +-
sysprep/script4.sh | 2 +-
sysprep/test-virt-sysprep-local-guests.sh.in | 24 +++++
sysprep/test-virt-sysprep-passwords.sh | 4 +-
sysprep/test-virt-sysprep-script.sh | 13 +--
sysprep/tests.mk | 69 ++++++++++++++
v2v/Makefile.am | 104 +-------------------
v2v/test-v2v-cdrom.sh | 12 +--
v2v/test-v2v-i-disk.sh | 7 +-
v2v/test-v2v-i-ova-formats.sh | 15 +--
v2v/test-v2v-i-ova-gz.sh | 9 +-
v2v/test-v2v-i-ova-two-disks.sh | 9 +-
v2v/test-v2v-i-ova.sh | 11 +--
v2v/test-v2v-machine-readable.sh | 5 -
v2v/test-v2v-networks-and-bridges.sh | 10 +-
v2v/test-v2v-no-copy.sh | 8 +-
v2v/test-v2v-o-glance.sh | 9 +-
v2v/test-v2v-o-libvirt.sh | 8 +-
v2v/test-v2v-o-null.sh | 8 +-
v2v/test-v2v-o-qemu.sh | 8 +-
v2v/test-v2v-o-rhev.sh | 8 +-
v2v/test-v2v-o-vdsm-options.sh | 8 +-
v2v/test-v2v-of-option.sh | 8 +-
v2v/test-v2v-on-option.sh | 8 +-
v2v/test-v2v-print-source.sh | 8 +-
v2v/test-v2v-real-conversions.sh | 43 ++++-----
v2v/test-v2v-sound.sh | 8 +-
v2v/test-v2v-windows-conversion.sh | 8 +-
v2v/tests.mk | 104 ++++++++++++++++++++
51 files changed, 836 insertions(+), 416 deletions(-)
create mode 100644 builder/tests.mk
create mode 100644 builder/website/tests.mk
create mode 100644 customize/tests.mk
create mode 100644 mllib/tests.mk
create mode 100644 resize/tests.mk
create mode 100644 sparsify/tests.mk
create mode 100755 sysprep/test-virt-sysprep-local-guests.sh.in
create mode 100644 sysprep/tests.mk
create mode 100644 v2v/tests.mk
diff --git a/.gitignore b/.gitignore
index ad40bff..5bbf80f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -486,12 +486,10 @@ Makefile.in
/stamp-guestfs-release-notes.pod
/stamp-h1
/sysprep/.depend
-/sysprep/stamp-script1.sh
-/sysprep/stamp-script2.sh
-/sysprep/stamp-script4.sh
/sysprep/stamp-virt-sysprep.pod
/sysprep/sysprep-extra-options.pod
/sysprep/sysprep-operations.pod
+/sysprep/test-virt-sysprep-local-guests.sh
/sysprep/virt-sysprep
/sysprep/virt-sysprep.1
/test.err
diff --git a/builder/Makefile.am b/builder/Makefile.am
index 597b943..9d079fa 100644
--- a/builder/Makefile.am
+++ b/builder/Makefile.am
@@ -15,13 +15,16 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-include $(top_srcdir)/subdir-rules.mk
-
AM_YFLAGS = -d
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = tests.mk
+
EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
libguestfs.gpg \
+ tests.mk \
test-index \
test-virt-builder.sh \
test-virt-builder-list.sh \
@@ -205,18 +208,10 @@ stamp-virt-builder.pod: virt-builder.pod
$(top_srcdir)/customize/customize-synop
CLEANFILES += stamp-virt-builder.pod
-# Tests.
-
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-disk_images := \
- $(shell for f in debian fedora ubuntu windows; do if [ -s
"../tests/guests/$$f.img" ]; then echo $$f.xz; fi; done) \
- $(shell if [ -s "../tests/guests/fedora.img" ]; then echo fedora.qcow2
fedora.qcow2.xz; fi)
+# Disk images for tests.
CLEANFILES += *.qcow2 *.xz
-check_DATA = $(disk_images)
-
fedora.qcow2: ../tests/guests/fedora.img
rm -f $@ $@-t
qemu-img convert -f raw -O qcow2 $< $@-t
@@ -232,20 +227,6 @@ fedora.qcow2.xz: fedora.qcow2
xz --best -c $< > $@-t
mv $@-t $@
-TESTS = \
- test-virt-builder-list.sh \
- test-virt-index-validate.sh
-
-if ENABLE_APPLIANCE
-TESTS += test-virt-builder.sh
-endif ENABLE_APPLIANCE
-
-check-valgrind:
- $(MAKE) VG="$(top_builddir)/run @VG@" check
-
-check-slow:
- $(MAKE) TESTS="test-virt-builder-planner.sh" check
-
# Dependencies.
depend: .depend
@@ -330,3 +311,5 @@ endif
# in the distribution, so just remove them from the distdir.
dist-hook:
rm -f $(distdir)/index-parse.c $(distdir)/index-parse.h $(distdir)/index-scan.c
+
+include $(srcdir)/tests.mk
diff --git a/builder/test-virt-builder-list.sh b/builder/test-virt-builder-list.sh
index 2b6dfad..e42e3ec 100755
--- a/builder/test-virt-builder-list.sh
+++ b/builder/test-virt-builder-list.sh
@@ -21,8 +21,6 @@
export LANG=C
set -e
-abs_builddir=$(pwd)
-
export XDG_CONFIG_HOME=
export XDG_CONFIG_DIRS="$abs_builddir/test-config"
diff --git a/builder/test-virt-builder.sh b/builder/test-virt-builder.sh
index f357d12..c6e99c4 100755
--- a/builder/test-virt-builder.sh
+++ b/builder/test-virt-builder.sh
@@ -19,17 +19,10 @@
export LANG=C
set -e
-abs_builddir=$(pwd)
-
export XDG_CONFIG_HOME=
export XDG_CONFIG_DIRS="$abs_builddir/test-config"
-if [ -n "$SKIP_TEST_VIRT_BUILDER_SH" ]; then
- echo "$0: skipping test because environment variable is set."
- exit 77
-fi
-
-if [ ! -f fedora.xz ]; then
+if [ ! -f $builddir/fedora.xz ]; then
echo "$0: test skipped because there is no fedora.xz in the build
directory"
exit 77
fi
@@ -64,19 +57,20 @@ $VG virt-builder phony-fedora \
--root-password password:123456 \
--mkdir /etc/foo/bar/baz \
--write '/etc/foo/bar/baz/foo:Hello World' \
- --upload Makefile:/Makefile \
- --edit '/Makefile: s{^#.*}{}' \
- --upload Makefile:/etc/foo/bar/baz \
- --delete /Makefile \
+ --upload $srcdir/test-virt-builder.sh:/test \
+ --edit '/test: s{^#.*}{}' \
+ --upload $srcdir/test-virt-builder.sh:/etc/foo/bar/baz \
+ --delete /test \
--link /etc/foo/bar/baz/foo:/foo \
--link /etc/foo/bar/baz/foo:/foo1:/foo2:/foo3 \
- --firstboot Makefile --firstboot-command 'echo "hello"' \
+ --firstboot $srcdir/test-virt-builder.sh \
+ --firstboot-command 'echo "hello"' \
--firstboot-install "minicom,inkscape"
# Check that some modifications were made.
$VG guestfish --ro -i -a $output > test.out <<EOF
# Uploaded files
-is-file /etc/foo/bar/baz/Makefile
+is-file /etc/foo/bar/baz/test-virt-builder.sh
cat /etc/foo/bar/baz/foo
is-symlink /foo
is-symlink /foo1
diff --git a/builder/test-virt-index-validate.sh b/builder/test-virt-index-validate.sh
index b00a086..0e65591 100755
--- a/builder/test-virt-index-validate.sh
+++ b/builder/test-virt-index-validate.sh
@@ -19,7 +19,7 @@
export LANG=C
set -e
-! $VG virt-index-validate test-virt-index-validate-bad-1
-$VG virt-index-validate test-virt-index-validate-good-1
-$VG virt-index-validate test-virt-index-validate-good-2
-$VG virt-index-validate test-virt-index-validate-good-3
+! $VG virt-index-validate $srcdir/test-virt-index-validate-bad-1
+$VG virt-index-validate $srcdir/test-virt-index-validate-good-1
+$VG virt-index-validate $srcdir/test-virt-index-validate-good-2
+$VG virt-index-validate $srcdir/test-virt-index-validate-good-3
diff --git a/builder/tests.mk b/builder/tests.mk
new file mode 100644
index 0000000..0c26936
--- /dev/null
+++ b/builder/tests.mk
@@ -0,0 +1,77 @@
+# 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)/builder
+
+localtests_DATA = \
+ debian.xz \
+ fedora.qcow2 \
+ fedora.qcow2.xz \
+ fedora.xz \
+ ubuntu.xz \
+ windows.xz
+
+localtests_SCRIPTS = \
+ test-virt-builder-list.sh \
+ test-virt-builder-planner.sh \
+ test-virt-builder.sh \
+ test-virt-index-validate.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
+
+check-fast:
+ $(top_builddir)/run $(top_builddir)/test-harness --fast
+
+check-slow:
+ $(top_builddir)/run $(top_builddir)/test-harness --slow
+
+EXTRA_DIST += tests.mk
diff --git a/builder/website/Makefile.am b/builder/website/Makefile.am
index 4a65156..0b678af 100644
--- a/builder/website/Makefile.am
+++ b/builder/website/Makefile.am
@@ -17,9 +17,12 @@
include $(top_srcdir)/subdir-rules.mk
+generator_built = tests.mk
+
EXTRA_DIST = \
.gitignore \
compress.sh \
+ tests.mk \
test-guest.sh \
validate.sh \
README \
@@ -42,9 +45,4 @@ EXTRA_DIST = \
CLEANFILES = *~
-# Validates the index file.
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-TESTS = validate.sh
-
-check-valgrind:
- $(MAKE) VG="$(top_builddir)/run @VG@" check
+include $(srcdir)/tests.mk
diff --git a/builder/website/tests.mk b/builder/website/tests.mk
new file mode 100644
index 0000000..0f716a7
--- /dev/null
+++ b/builder/website/tests.mk
@@ -0,0 +1,67 @@
+# 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)/builder/website
+
+localtests_DATA = \
+ index \
+ index.asc
+
+localtests_SCRIPTS = \
+ validate.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
+
+check-fast:
+ $(top_builddir)/run $(top_builddir)/test-harness --fast
+
+EXTRA_DIST += tests.mk
diff --git a/configure.ac b/configure.ac
index df4bd5a..27d1740 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1718,6 +1718,8 @@ AC_CONFIG_FILES([podwrapper.pl],
[chmod +x,-w podwrapper.pl])
AC_CONFIG_FILES([run],
[chmod +x,-w run])
+AC_CONFIG_FILES([sysprep/test-virt-sysprep-local-guests.sh],
+ [chmod +x,-w cat/test-virt-sysprep-local-guests.sh])
AC_CONFIG_FILES([Makefile
align/Makefile
diff --git a/customize/Makefile.am b/customize/Makefile.am
index 1974b80..dcc1421 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
SOURCES_MLI = \
crypt.mli \
@@ -163,17 +164,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
@@ -193,3 +183,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..f79c51b
--- /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-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)/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 2b2dd87..9602081 100644
--- a/generator/tests.ml
+++ b/generator/tests.ml
@@ -511,4 +511,142 @@ let tests = [
];
};
+ (* Test tools written in OCaml. *)
+
+ "mllib", {
+ defaults with
+ check_fast = [
+ "common_utils_tests";
+ "JSON_tests";
+ ];
+ };
+
+ "customize", {
+ defaults with
+ check = [
+ "test-virt-customize.sh"
+ ];
+ };
+
+ "builder", {
+ defaults with
+ check_fast = [
+ "test-virt-builder-list.sh";
+ "test-virt-index-validate.sh"
+ ];
+ check = [
+ "test-virt-builder.sh"
+ ];
+ check_slow = [
+ "test-virt-builder-planner.sh"
+ ];
+ check_data = [
+ "debian.xz";
+ "fedora.xz";
+ "ubuntu.xz";
+ "windows.xz";
+ "fedora.qcow2";
+ "fedora.qcow2.xz";
+ ];
+ };
+
+ "builder/website", {
+ defaults with
+ check_fast = [
+ "validate.sh"
+ ];
+ check_data = [
+ "index";
+ "index.asc"
+ ];
+ };
+
+ "resize", {
+ defaults with
+ check = [
+ "test-virt-resize.pl"
+ ];
+ };
+
+ "sparsify", {
+ defaults with
+ check = [
+ "test-virt-sparsify.sh";
+ "test-virt-sparsify-in-place.sh";
+ ];
+ };
+
+ "sysprep", {
+ defaults with
+ check = [
+ "test-virt-sysprep.sh";
+ "test-virt-sysprep-passwords.sh";
+ "test-virt-sysprep-script.sh";
+ ];
+ check_local_guests = [
+ "test-virt-sysprep-local-guests.sh";
+ ];
+ };
+
+ (* The virt-v2v tests here are not meant to be thorough tests of guest
+ * conversion. There is a test suite used to test conversion which is
+ * kept outside libguestfs because it contains lots of proprietary
+ * unredistributable guests like Windows.
+ *
+ * The tests here instead are testing:
+ *
+ * - virt-v2v command line arguments
+ * - virt-v2v reads and writes files to the correct places
+ * - valgrind & memory leaks
+ * - any conversion properties that can be tested using just the
+ * phony guests (but we don't go out of our way here)
+ * - that up to date guests don't crash virt-v2v
+ *)
+ "v2v", {
+ defaults with
+ check_fast = [
+ "test-v2v-i-ova-formats.sh";
+ "test-v2v-i-ova-gz.sh";
+ "test-v2v-i-ova-two-disks.sh";
+ "v2v_unit_tests";
+ ];
+ check = [
+ "test-v2v-cdrom.sh";
+ "test-v2v-i-ova.sh";
+ "test-v2v-i-disk.sh";
+ "test-v2v-machine-readable.sh";
+ "test-v2v-networks-and-bridges.sh";
+ "test-v2v-no-copy.sh";
+ "test-v2v-o-glance.sh";
+ "test-v2v-o-libvirt.sh";
+ "test-v2v-o-null.sh";
+ "test-v2v-o-qemu.sh";
+ "test-v2v-o-rhev.sh";
+ "test-v2v-o-vdsm-options.sh";
+ "test-v2v-of-option.sh";
+ "test-v2v-on-option.sh";
+ "test-v2v-print-source.sh";
+ "test-v2v-sound.sh";
+ "test-v2v-windows-conversion.sh";
+ ];
+ check_slow = [
+ "test-v2v-real-conversions.sh";
+ ];
+ check_data = [
+ "test-v2v-cdrom.expected";
+ "test-v2v-cdrom.xml";
+ "test-v2v-i-ova.ovf";
+ "test-v2v-i-ova.xml";
+ "test-v2v-i-ova-formats.expected";
+ "test-v2v-i-ova-formats.ovf";
+ "test-v2v-i-ova-gz.expected";
+ "test-v2v-i-ova-gz.ovf";
+ "test-v2v-i-ova-two-disks.expected";
+ "test-v2v-i-ova-two-disks.ovf";
+ "test-v2v-networks-and-bridges-expected.xml";
+ "test-v2v-networks-and-bridges.xml";
+ "test-v2v-sound.xml";
+ ];
+ };
+
]
diff --git a/mllib/Makefile.am b/mllib/Makefile.am
index 272c981..bef33d9 100644
--- a/mllib/Makefile.am
+++ b/mllib/Makefile.am
@@ -17,6 +17,8 @@
include $(top_srcdir)/subdir-rules.mk
+generator_built = tests.mk
+
EXTRA_DIST = \
$(SOURCES_MLI) \
$(filter-out config.ml libdir.ml,$(SOURCES_ML)) \
@@ -182,21 +184,8 @@ JSON_tests_LINK = \
$(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS)
$(OCAMLLINKFLAGS) \
$(JSON_tests_THEOBJECTS) -o $@
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-TESTS =
-check_PROGRAMS =
-
-if HAVE_OCAML_PKG_OUNIT
-check_PROGRAMS += common_utils_tests JSON_tests
-TESTS += common_utils_tests JSON_tests
-endif
-
CLEANFILES += oUnit-*
-check-valgrind:
- $(MAKE) VG="$(top_builddir)/run @VG@" check
-
# Dependencies.
depend: .depend
@@ -216,3 +205,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..0ae0029
--- /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-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)/mllib
+
+localtests_PROGRAMS = \
+ JSON_tests \
+ common_utils_tests
+
+# 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 657b626..773eac4 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_MLI) $(SOURCES_ML) $(SOURCES_C) \
virt-resize.pod \
@@ -127,18 +129,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
@@ -158,3 +148,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..88dd8e0
--- /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-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)/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 98ab729..4e0b8c9 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 \
@@ -120,19 +122,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
@@ -152,3 +141,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 64ead1a..0b86562 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..f375c03
--- /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-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)/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
diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am
index 9424c40..c430671 100644
--- a/sysprep/Makefile.am
+++ b/sysprep/Makefile.am
@@ -17,10 +17,14 @@
include $(top_srcdir)/subdir-rules.mk
+generator_built = tests.mk
+
EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
script1.sh script2.sh script3.sh script4.sh \
+ tests.mk \
test-virt-sysprep.sh \
+ test-virt-sysprep-local-guests.sh \
test-virt-sysprep-passwords.sh \
test-virt-sysprep-script.sh \
virt-sysprep.pod
@@ -200,29 +204,6 @@ sysprep-operations.pod: virt-sysprep
$(top_builddir)/run ./$< --dump-pod > $@-t
mv $@-t $@
-# Tests.
-
-TESTS_ENVIRONMENT = \
- abs_builddir=$(abs_builddir) \
- abs_srcdir=$(abs_srcdir) \
- PATH=$(abs_top_builddir)/fuse:$(PATH) \
- $(top_builddir)/run --test
-
-if ENABLE_APPLIANCE
-TESTS = \
- test-virt-sysprep.sh \
- test-virt-sysprep-passwords.sh \
- test-virt-sysprep-script.sh
-endif ENABLE_APPLIANCE
-
-check-valgrind:
- $(MAKE) TESTS="test-virt-sysprep.sh" VG="$(top_builddir)/run @VG@"
check
-
-check-valgrind-local-guests:
- for g in $(GUESTS); do \
- $(top_builddir)/run --test @VG@ ./virt-sysprep -n -c "$(libvirt_ro_uri)" -d
"$$g" || exit $$?; \
- done
-
# Dependencies.
depend: .depend
@@ -242,3 +223,5 @@ endif
DISTCLEANFILES = .depend
.PHONY: depend docs
+
+include $(srcdir)/tests.mk
diff --git a/sysprep/script1.sh b/sysprep/script1.sh
index 6ba274c..8726a6f 100755
--- a/sysprep/script1.sh
+++ b/sysprep/script1.sh
@@ -18,4 +18,4 @@
# This is used by test-virt-sysprep-script.sh.
-pwd > $abs_builddir/stamp-script1.sh
+pwd > $tmpdir/stamp-script1.sh
diff --git a/sysprep/script2.sh b/sysprep/script2.sh
index a8ca21f..163f36e 100755
--- a/sysprep/script2.sh
+++ b/sysprep/script2.sh
@@ -20,4 +20,4 @@
rm -f etc/resolv.conf
-pwd > $abs_builddir/stamp-script2.sh
+pwd > $tmpdir/stamp-script2.sh
diff --git a/sysprep/script4.sh b/sysprep/script4.sh
index fe377e0..313ab85 100755
--- a/sysprep/script4.sh
+++ b/sysprep/script4.sh
@@ -18,4 +18,4 @@
# This is used by test-virt-sysprep-script.sh.
-pwd >> $abs_builddir/stamp-script4.sh
+pwd >> $tmpdir/stamp-script4.sh
diff --git a/sysprep/test-virt-sysprep-local-guests.sh.in
b/sysprep/test-virt-sysprep-local-guests.sh.in
new file mode 100755
index 0000000..36ef713
--- /dev/null
+++ b/sysprep/test-virt-sysprep-local-guests.sh.in
@@ -0,0 +1,24 @@
+#!/bin/bash -
+# libguestfs
+# Copyright (C) 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.
+
+export LANG=C
+set -e
+
+for g in "$@"; do
+ $VG virt-sysprep -n -c "@libvirt_ro_uri@" -d "$g"
+done
diff --git a/sysprep/test-virt-sysprep-passwords.sh
b/sysprep/test-virt-sysprep-passwords.sh
index b5189c8..74ae5e7 100755
--- a/sysprep/test-virt-sysprep-passwords.sh
+++ b/sysprep/test-virt-sysprep-passwords.sh
@@ -26,7 +26,7 @@ if [ "$(guestfish get-backend)" = "uml" ]; then
exit 77
fi
-if [ ! -s ../tests/guests/fedora.img ]; then
+if [ ! -s $phonydir/fedora.img ]; then
echo "$0: skipping test because there is no phony Fedora test image"
exit 77
fi
@@ -37,7 +37,7 @@ fi
rm -f passwords.qcow2 password
guestfish -- \
disk-create passwords.qcow2 qcow2 -1 \
- backingfile:../tests/guests/fedora.img backingformat:raw
+ backingfile:$phonydir/fedora.img backingformat:raw
guestfish -a passwords.qcow2 -i <<'EOF'
write-append /etc/shadow "test01::15677:0:99999:7:::\n"
diff --git a/sysprep/test-virt-sysprep-script.sh b/sysprep/test-virt-sysprep-script.sh
index 10ba1d1..0dbf964 100755
--- a/sysprep/test-virt-sysprep-script.sh
+++ b/sysprep/test-virt-sysprep-script.sh
@@ -20,11 +20,6 @@ export LANG=C
set -e
#set -x
-if [ -n "$SKIP_TEST_VIRT_SYSPREP_SCRIPT_SH" ]; then
- echo "$0: test skipped because environment variable is set."
- exit 77
-fi
-
if [ ! -w /dev/fuse ]; then
echo "$0: SKIPPING test, because there is no /dev/fuse."
exit 77
@@ -32,7 +27,7 @@ fi
# Check that multiple scripts can run.
rm -f stamp-script1.sh stamp-script2.sh stamp-script4.sh
-if ! virt-sysprep -q -n -a ../tests/guests/fedora.img --enable script \
+if ! virt-sysprep -q -n -a $phonydir/fedora.img --enable script \
--script $abs_srcdir/script1.sh --script $abs_srcdir/script2.sh; then
echo "$0: virt-sysprep wasn't expected to exit with error."
exit 1
@@ -43,19 +38,19 @@ if [ ! -f stamp-script1.sh -o ! -f stamp-script2.sh ]; then
fi
# Check that if a script fails, virt-sysprep exits with an error.
-if virt-sysprep -q -n -a ../tests/guests/fedora.img --enable script \
+if virt-sysprep -q -n -a $phonydir/fedora.img --enable script \
--script $abs_srcdir/script3.sh; then
echo "$0: virt-sysprep didn't exit with an error."
exit 1
fi
# Check that virt-sysprep uses a new temporary directory every time.
-if ! virt-sysprep -q -n -a ../tests/guests/fedora.img --enable script \
+if ! virt-sysprep -q -n -a $phonydir/fedora.img --enable script \
--script $abs_srcdir/script4.sh; then
echo "$0: virt-sysprep (script4.sh, try #1) wasn't expected to exit with
error."
exit 1
fi
-if ! virt-sysprep -q -n -a ../tests/guests/fedora.img --enable script \
+if ! virt-sysprep -q -n -a $phonydir/fedora.img --enable script \
--script $abs_srcdir/script4.sh; then
echo "$0: virt-sysprep (script4.sh, try #2) wasn't expected to exit with
error."
exit 1
diff --git a/sysprep/tests.mk b/sysprep/tests.mk
new file mode 100644
index 0000000..38df683
--- /dev/null
+++ b/sysprep/tests.mk
@@ -0,0 +1,69 @@
+# 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)/sysprep
+
+localtests_SCRIPTS = \
+ test-virt-sysprep-local-guests.sh \
+ test-virt-sysprep-passwords.sh \
+ test-virt-sysprep-script.sh \
+ test-virt-sysprep.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
+
+check-local-guests:
+ $(top_builddir)/run $(top_builddir)/test-harness --local-guests
+
+check-valgrind-local-guests:
+ $(top_builddir)/run $(top_builddir)/test-harness --valgrind --local-guests
+
+EXTRA_DIST += tests.mk
diff --git a/v2v/Makefile.am b/v2v/Makefile.am
index 06da002..7435d5c 100644
--- a/v2v/Makefile.am
+++ b/v2v/Makefile.am
@@ -17,24 +17,13 @@
include $(top_srcdir)/subdir-rules.mk
+generator_built = tests.mk
+
EXTRA_DIST = \
$(SOURCES_MLI) $(SOURCES_ML) $(SOURCES_C) \
v2v_unit_tests.ml \
- $(TESTS) $(SLOW_TESTS) \
+ tests.mk \
HACKING \
- test-v2v-cdrom.expected \
- test-v2v-cdrom.xml \
- test-v2v-i-ova.ovf \
- test-v2v-i-ova.xml \
- test-v2v-i-ova-formats.expected \
- test-v2v-i-ova-formats.ovf \
- test-v2v-i-ova-gz.expected \
- test-v2v-i-ova-gz.ovf \
- test-v2v-i-ova-two-disks.expected \
- test-v2v-i-ova-two-disks.ovf \
- test-v2v-networks-and-bridges-expected.xml \
- test-v2v-networks-and-bridges.xml \
- test-v2v-sound.xml \
virt-v2v.pod
CLEANFILES = *~ *.annot *.cmi *.cmo *.cmx *.cmxa *.o virt-v2v
@@ -200,92 +189,7 @@ stamp-virt-v2v.pod: virt-v2v.pod
CLEANFILES += stamp-virt-v2v.pod
-# Tests.
-
-# The virt-v2v tests here are not meant to be thorough tests of guest
-# conversion. There is a test suite used to test conversion which is
-# kept outside libguestfs because it contains lots of proprietary
-# unredistributable guests like Windows.
-#
-# The tests here instead are testing:
-#
-# - virt-v2v command line arguments
-# - virt-v2v reads and writes files to the correct places
-# - valgrind & memory leaks
-# - any conversion properties that can be tested using just the
-# phony guests (but we don't go out of our way here)
-# - that up to date guests don't crash virt-v2v
-
-TESTS_ENVIRONMENT = $(top_builddir)/run --test
-
-TESTS = \
- test-v2v-i-ova-formats.sh \
- test-v2v-i-ova-gz.sh \
- test-v2v-i-ova-two-disks.sh
-
-if HAVE_OCAML_PKG_OUNIT
-TESTS += v2v_unit_tests
-endif
-
-if ENABLE_APPLIANCE
-TESTS += \
- test-v2v-cdrom.sh \
- test-v2v-i-ova.sh \
- test-v2v-i-disk.sh \
- test-v2v-machine-readable.sh \
- test-v2v-networks-and-bridges.sh \
- test-v2v-no-copy.sh \
- test-v2v-o-glance.sh \
- test-v2v-o-libvirt.sh \
- test-v2v-o-null.sh \
- test-v2v-o-qemu.sh \
- test-v2v-o-rhev.sh \
- test-v2v-o-vdsm-options.sh \
- test-v2v-of-option.sh \
- test-v2v-on-option.sh \
- test-v2v-print-source.sh \
- test-v2v-sound.sh \
- test-v2v-windows-conversion.sh
-endif ENABLE_APPLIANCE
-
-check-valgrind:
- $(MAKE) VG="$(top_builddir)/run @VG@" check
-
-SLOW_TESTS = \
- test-v2v-real-conversions.sh
-
-check-slow: $(real_guests:%=%.img)
- $(MAKE) check TESTS="$(SLOW_TESTS)"
-
-# A selection of real guests that test-v2v-real-conversions.sh will
-# try to convert. This is only used by 'make check-slow'.
-
-real_guests = \
- centos-6 \
- centos-7.0 \
- fedora-20 \
- rhel-5.10 \
- rhel-6.5 \
- rhel-7.0
-
-$(real_guests:%=%.img):
- rm -f $@
- n=`basename $@ .img`; \
- vb="$(top_builddir)/run $(top_builddir)/builder/virt-builder"; \
- if $$vb --help >/dev/null && $$vb --notes $$n >/dev/null; then \
- $$vb $$n; \
- else \
- touch $$n.img; \
- fi
-
-CLEANFILES += $(real_guests:%=%.img)
-
# Unit tests.
-check_PROGRAMS =
-if HAVE_OCAML_PKG_OUNIT
-check_PROGRAMS += v2v_unit_tests
-endif
-
v2v_unit_tests_BOBJECTS = \
$(top_builddir)/mllib/config.cmo \
$(top_builddir)/mllib/common_gettext.cmo \
@@ -340,3 +244,5 @@ endif
DISTCLEANFILES = .depend
.PHONY: depend docs
+
+include $(srcdir)/tests.mk
diff --git a/v2v/test-v2v-cdrom.sh b/v2v/test-v2v-cdrom.sh
index 93975c2..82de447 100755
--- a/v2v/test-v2v-cdrom.sh
+++ b/v2v/test-v2v-cdrom.sh
@@ -23,26 +23,20 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_CDROM_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_builddir="$(pwd)"
libvirt_uri="test://$abs_builddir/test-v2v-cdrom.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
fi
-f=../tests/guests/blank-disk.img
+f=$phonydir/blank-disk.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because blank-disk.img was not created"
exit 77
@@ -71,7 +65,7 @@ awk '/<disk /{p=1;print;next}
p&&/<\/disk>/{p=0;print;next} ;p' \
$d/windows.xml |
grep -v '<source file' > $d/disks
-if ! diff -u test-v2v-cdrom.expected $d/disks; then
+if ! diff -u $srcdir/test-v2v-cdrom.expected $d/disks; then
echo "$0: unexpected disk assignments"
cat $d/disks
exit 1
diff --git a/v2v/test-v2v-i-disk.sh b/v2v/test-v2v-i-disk.sh
index b15e0d0..e385bf3 100755
--- a/v2v/test-v2v-i-disk.sh
+++ b/v2v/test-v2v-i-disk.sh
@@ -22,17 +22,12 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_I_DISK_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-i-ova-formats.sh b/v2v/test-v2v-i-ova-formats.sh
index bd3e048..67dbbde 100755
--- a/v2v/test-v2v-i-ova-formats.sh
+++ b/v2v/test-v2v-i-ova-formats.sh
@@ -24,11 +24,6 @@ set -e
formats="tar zip tar-gz tar-xz"
-if [ -n "$SKIP_TEST_V2V_I_OVA_FORMATS_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if ! zip --version >/dev/null 2>&1; then
echo "$0: test skipped because 'zip' utility is not available"
exit 77
@@ -65,17 +60,17 @@ echo -e "SHA1(disk1.vmdk)=$sha\r" > disk1.mf
for format in $formats; do
case "$format" in
tar)
- tar -cf test-$format.ova ../test-v2v-i-ova-formats.ovf disk1.vmdk disk1.mf
+ tar -cf test-$format.ova $srcdir/test-v2v-i-ova-formats.ovf disk1.vmdk
disk1.mf
;;
zip)
- zip -r test ../test-v2v-i-ova-formats.ovf disk1.vmdk disk1.mf
+ zip -r test $srcdir/test-v2v-i-ova-formats.ovf disk1.vmdk disk1.mf
mv test.zip test-$format.ova
;;
tar-gz)
- tar -czf test-$format.ova ../test-v2v-i-ova-formats.ovf disk1.vmdk disk1.mf
+ tar -czf test-$format.ova $srcdir/test-v2v-i-ova-formats.ovf disk1.vmdk
disk1.mf
;;
tar-xz)
- tar -cJf test-$format.ova ../test-v2v-i-ova-formats.ovf disk1.vmdk disk1.mf
+ tar -cJf test-$format.ova $srcdir/test-v2v-i-ova-formats.ovf disk1.vmdk
disk1.mf
;;
*)
echo "Unhandled format '$format'"
@@ -94,7 +89,7 @@ for format in $formats; do
sed 's,[^ \t]*\(disk.*.vmdk\),\1,' > $d/source
# Check the parsed source is what we expect.
- diff -u test-v2v-i-ova-formats.expected $d/source
+ diff -u $srcdir/test-v2v-i-ova-formats.expected $d/source
done
rm -rf $d
diff --git a/v2v/test-v2v-i-ova-gz.sh b/v2v/test-v2v-i-ova-gz.sh
index 6c630fb..18cce91 100755
--- a/v2v/test-v2v-i-ova-gz.sh
+++ b/v2v/test-v2v-i-ova-gz.sh
@@ -22,11 +22,6 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_I_OVA_GZ_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
@@ -49,7 +44,7 @@ gzip disk1.vmdk
sha=`sha1sum disk1.vmdk | awk '{print $1}'`
echo -e "SHA1(disk1.vmdk)=$sha\r" > disk1.mf
-tar -cf test.ova ../test-v2v-i-ova-gz.ovf disk1.vmdk.gz disk1.mf
+tar -cf test.ova $srcdir/test-v2v-i-ova-gz.ovf disk1.vmdk.gz disk1.mf
popd
# Run virt-v2v but only as far as the --print-source stage, and
@@ -60,6 +55,6 @@ $VG virt-v2v --debug-gc --quiet \
sed 's,[^ \t]*\(\.vmdk\),\1,' > $d/source
# Check the parsed source is what we expect.
-diff -u test-v2v-i-ova-gz.expected $d/source
+diff -u $srcdir/test-v2v-i-ova-gz.expected $d/source
rm -rf $d
diff --git a/v2v/test-v2v-i-ova-two-disks.sh b/v2v/test-v2v-i-ova-two-disks.sh
index dfda956..db27573 100755
--- a/v2v/test-v2v-i-ova-two-disks.sh
+++ b/v2v/test-v2v-i-ova-two-disks.sh
@@ -22,11 +22,6 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_I_OVA_TWO_DISKS_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
@@ -53,7 +48,7 @@ truncate -s 100k disk2.vmdk
sha=`sha1sum disk2.vmdk | awk '{print $1}'`
echo -e "SHA1(disk2.vmdk)=$sha\r" > disk2.mf
-tar -cf test.ova ../test-v2v-i-ova-two-disks.ovf disk1.vmdk disk1.mf disk2.vmdk disk2.mf
+tar -cf test.ova $srcdir/test-v2v-i-ova-two-disks.ovf disk1.vmdk disk1.mf disk2.vmdk
disk2.mf
popd
# Run virt-v2v but only as far as the --print-source stage, and
@@ -64,6 +59,6 @@ $VG virt-v2v --debug-gc --quiet \
sed 's,[^ \t]*\(disk.*.vmdk\),\1,' > $d/source
# Check the parsed source is what we expect.
-diff -u test-v2v-i-ova-two-disks.expected $d/source
+diff -u $srcdir/test-v2v-i-ova-two-disks.expected $d/source
rm -rf $d
diff --git a/v2v/test-v2v-i-ova.sh b/v2v/test-v2v-i-ova.sh
index 5047eca..1eef6aa 100755
--- a/v2v/test-v2v-i-ova.sh
+++ b/v2v/test-v2v-i-ova.sh
@@ -22,17 +22,12 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_I_OVA_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
@@ -55,7 +50,7 @@ ova=test-ova.ova
raw=TestOva-sda
qemu-img convert $f -O vmdk $d/$vmdk
-cp $ovf $d/$ovf
+cp $srcdir/test-v2v-i-ova.ovf $d/$ovf
sha1=`sha1sum $d/$ovf | awk '{print $1}'`
echo "SHA1($ovf)= $sha1" > $d/$mf
sha1=`sha1sum $d/$vmdk | awk '{print $1}'`
@@ -83,6 +78,6 @@ sed \
< $d/TestOva.xml.old > $d/TestOva.xml
# Check the libvirt XML output.
-diff -u test-v2v-i-ova.xml $d/TestOva.xml
+diff -u $srcdir/test-v2v-i-ova.xml $d/TestOva.xml
rm -rf $d
diff --git a/v2v/test-v2v-machine-readable.sh b/v2v/test-v2v-machine-readable.sh
index 3e94ae5..7b0ae9c 100755
--- a/v2v/test-v2v-machine-readable.sh
+++ b/v2v/test-v2v-machine-readable.sh
@@ -22,11 +22,6 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_MACHINE_READABLE_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
$VG virt-v2v --debug-gc --machine-readable > test-v2v-machine-readable.out
grep virt-v2v test-v2v-machine-readable.out
grep libguestfs-rewrite test-v2v-machine-readable.out
diff --git a/v2v/test-v2v-networks-and-bridges.sh b/v2v/test-v2v-networks-and-bridges.sh
index 68743d6..0446a3e 100755
--- a/v2v/test-v2v-networks-and-bridges.sh
+++ b/v2v/test-v2v-networks-and-bridges.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_NETWORKS_AND_BRIDGES_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_builddir="$(pwd)"
libvirt_uri="test://$abs_builddir/test-v2v-networks-and-bridges.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
@@ -72,6 +66,6 @@ sed -n '/interface/,/\/interface/p' $d/windows.xml |
grep -v 'model type=' > $d/networks
# Test that the output has mapped the networks and bridges correctly.
-diff -ur test-v2v-networks-and-bridges-expected.xml $d/networks
+diff -ur $srcdir/test-v2v-networks-and-bridges-expected.xml $d/networks
rm -r $d
diff --git a/v2v/test-v2v-no-copy.sh b/v2v/test-v2v-no-copy.sh
index f0408dc..8afe94e 100755
--- a/v2v/test-v2v-no-copy.sh
+++ b/v2v/test-v2v-no-copy.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_NO_COPY_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-o-glance.sh b/v2v/test-v2v-o-glance.sh
index 121177f..e4d7d6a 100755
--- a/v2v/test-v2v-o-glance.sh
+++ b/v2v/test-v2v-o-glance.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_O_GLANCE_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
@@ -50,6 +44,7 @@ fi
# We don't want to upload to the real glance, so introduce a fake
# glance binary.
ln -sf "$(which echo)" glance
+export PATH=.:$PATH
$VG virt-v2v --debug-gc \
-i libvirt -ic "$libvirt_uri" windows \
diff --git a/v2v/test-v2v-o-libvirt.sh b/v2v/test-v2v-o-libvirt.sh
index 77b38e0..964198e 100755
--- a/v2v/test-v2v-o-libvirt.sh
+++ b/v2v/test-v2v-o-libvirt.sh
@@ -22,11 +22,6 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_O_LIBVIRT_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
@@ -40,10 +35,9 @@ if [ "$(id -u)" -eq 0 ]; then
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-o-null.sh b/v2v/test-v2v-o-null.sh
index 9ed581b..14413e1 100755
--- a/v2v/test-v2v-o-null.sh
+++ b/v2v/test-v2v-o-null.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_O_NULL_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-o-qemu.sh b/v2v/test-v2v-o-qemu.sh
index 9de2b56..a1a92f5 100755
--- a/v2v/test-v2v-o-qemu.sh
+++ b/v2v/test-v2v-o-qemu.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_O_QEMU_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-o-rhev.sh b/v2v/test-v2v-o-rhev.sh
index 1162e31..5baba2b 100755
--- a/v2v/test-v2v-o-rhev.sh
+++ b/v2v/test-v2v-o-rhev.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_O_RHEV_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-o-vdsm-options.sh b/v2v/test-v2v-o-vdsm-options.sh
index c170467..36920e8 100755
--- a/v2v/test-v2v-o-vdsm-options.sh
+++ b/v2v/test-v2v-o-vdsm-options.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_O_VDSM_OPTIONS_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-of-option.sh b/v2v/test-v2v-of-option.sh
index 27441cf..f87c09c 100755
--- a/v2v/test-v2v-of-option.sh
+++ b/v2v/test-v2v-of-option.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_OF_OPTION_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network or
qcow2"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-on-option.sh b/v2v/test-v2v-on-option.sh
index e3edb67..e65c61f 100755
--- a/v2v/test-v2v-on-option.sh
+++ b/v2v/test-v2v-on-option.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_ON_OPTION_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-print-source.sh b/v2v/test-v2v-print-source.sh
index e7a8382..ad8516d 100755
--- a/v2v/test-v2v-print-source.sh
+++ b/v2v/test-v2v-print-source.sh
@@ -22,15 +22,9 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_PRINT_SOURCE_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-real-conversions.sh b/v2v/test-v2v-real-conversions.sh
index bb98488..adb7b4e 100755
--- a/v2v/test-v2v-real-conversions.sh
+++ b/v2v/test-v2v-real-conversions.sh
@@ -18,31 +18,24 @@
# Test virt-v2v on some real guests.
#
-# The phony Fedora guest isn't sufficient for testing. The
-# Makefile.am builds some real guests using virt-builder and we just
-# run virt-v2v on those (to make sure it doesn't crash / assert).
+# The phony Fedora guest isn't sufficient for testing. Build some
+# real guests and run virt-v2v on those (to make sure it doesn't
+# crash / assert).
unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_REAL_CONVERSIONS_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
+real_guests="centos-6 centos-7.0 fedora-22 rhel-5.10 rhel-6.5 rhel-7.0"
-d=test-v2v-real-conversions.d
-rm -rf $d
-mkdir $d
-
-for file in *.img; do
- if test -f $file && test -s $file ; then
- n=`basename $file .img`
+for g in $real_guests; do
+ if virt-builder --help >/dev/null && virt-builder --notes $g
>/dev/null; then
+ virt-builder $g
# Create some minimal test metadata.
- cat > $d/$n-input.xml <<EOF
+ cat > $g-input.xml <<EOF
<domain type='test'>
- <name>$n</name>
+ <name>$g</name>
<memory>1048576</memory>
<os>
<type>hvm</type>
@@ -51,7 +44,7 @@ for file in *.img; do
<devices>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
- <source file='$(pwd)/$file'/>
+ <source file='$(pwd)/$g.img'/>
<target dev='vda' bus='virtio'/>
</disk>
</devices>
@@ -59,24 +52,22 @@ for file in *.img; do
EOF
virt-v2v --debug-gc \
- -i libvirtxml $d/$n-input.xml \
- -o local -os $d
+ -i libvirtxml $g-input.xml \
+ -o local -os $(pwd)
# Test the libvirt XML metadata and a disk was created.
- test -f $d/$n.xml
- test -f $d/$n-sda
+ test -f $g.xml
+ test -f $g-sda
# Test the disk has a similar size to the original.
- size_before="$(du $file | awk '{print $1}')"
- size_after="$(du $d/$n-sda | awk '{print $1}')"
+ size_before="$(du $g.img | awk '{print $1}')"
+ size_after="$(du $g-sda | awk '{print $1}')"
diff="$(( 100 * size_after / size_before ))"
if test $diff -lt 50; then
echo "$0: disk image may have been corrupted or truncated"
echo "size_before=$size_before size_after=$size_after diff=$diff"
- ls -l $file $d/$n-sda
+ ls -l $file $g-sda
exit 1
fi
fi
done
-
-rm -r $d
diff --git a/v2v/test-v2v-sound.sh b/v2v/test-v2v-sound.sh
index 7cb6f24..54fa2f0 100755
--- a/v2v/test-v2v-sound.sh
+++ b/v2v/test-v2v-sound.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_SOUND_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_builddir="$(pwd)"
libvirt_uri="test://$abs_builddir/test-v2v-sound.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/test-v2v-windows-conversion.sh b/v2v/test-v2v-windows-conversion.sh
index 7e8e628..f2464cb 100755
--- a/v2v/test-v2v-windows-conversion.sh
+++ b/v2v/test-v2v-windows-conversion.sh
@@ -22,20 +22,14 @@ unset CDPATH
export LANG=C
set -e
-if [ -n "$SKIP_TEST_V2V_WINDOWS_CONVERSION_SH" ]; then
- echo "$0: test skipped because environment variable is set"
- exit 77
-fi
-
if [ "$(guestfish get-backend)" = "uml" ]; then
echo "$0: test skipped because UML backend does not support network"
exit 77
fi
-abs_top_builddir="$(cd ..; pwd)"
libvirt_uri="test://$abs_top_builddir/tests/guests/guests.xml"
-f=../tests/guests/windows.img
+f=$phonydir/windows.img
if ! test -f $f || ! test -s $f; then
echo "$0: test skipped because phony Windows image was not created"
exit 77
diff --git a/v2v/tests.mk b/v2v/tests.mk
new file mode 100644
index 0000000..ac7780c
--- /dev/null
+++ b/v2v/tests.mk
@@ -0,0 +1,104 @@
+# 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)/v2v
+
+localtests_DATA = \
+ test-v2v-cdrom.expected \
+ test-v2v-cdrom.xml \
+ test-v2v-i-ova-formats.expected \
+ test-v2v-i-ova-formats.ovf \
+ test-v2v-i-ova-gz.expected \
+ test-v2v-i-ova-gz.ovf \
+ test-v2v-i-ova-two-disks.expected \
+ test-v2v-i-ova-two-disks.ovf \
+ test-v2v-i-ova.ovf \
+ test-v2v-i-ova.xml \
+ test-v2v-networks-and-bridges-expected.xml \
+ test-v2v-networks-and-bridges.xml \
+ test-v2v-sound.xml
+
+localtests_SCRIPTS = \
+ test-v2v-cdrom.sh \
+ test-v2v-i-disk.sh \
+ test-v2v-i-ova-formats.sh \
+ test-v2v-i-ova-gz.sh \
+ test-v2v-i-ova-two-disks.sh \
+ test-v2v-i-ova.sh \
+ test-v2v-machine-readable.sh \
+ test-v2v-networks-and-bridges.sh \
+ test-v2v-no-copy.sh \
+ test-v2v-o-glance.sh \
+ test-v2v-o-libvirt.sh \
+ test-v2v-o-null.sh \
+ test-v2v-o-qemu.sh \
+ test-v2v-o-rhev.sh \
+ test-v2v-o-vdsm-options.sh \
+ test-v2v-of-option.sh \
+ test-v2v-on-option.sh \
+ test-v2v-print-source.sh \
+ test-v2v-real-conversions.sh \
+ test-v2v-sound.sh \
+ test-v2v-windows-conversion.sh
+
+localtests_PROGRAMS = \
+ v2v_unit_tests
+
+# 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
+
+check-slow:
+ $(top_builddir)/run $(top_builddir)/test-harness --slow
+
+EXTRA_DIST += tests.mk
--
2.5.0