diff --git a/HACKING b/HACKING index 207b9edc91..256e8aeb84 100644 --- a/HACKING +++ b/HACKING @@ -107,6 +107,15 @@ and run the tests: Valgrind is a test that checks for memory management issues, such as leaks or use of uninitialized variables. +Some tests are skipped by default in a development environment, based on the +time they take in comparison to the likelihood that those tests will turn up +problems during incremental builds. These tests default to being run when when +building from a tarball or with the configure option --enable-expensive-tests; +you can also force a one-time toggle of these tests by setting +VIR_TEST_EXPENSIVE to 0 or 1 at make time, as in: + + make check VIR_TEST_EXPENSIVE=1 + If you encounter any failing tests, the VIR_TEST_DEBUG environment variable may provide extra information to debug the failures. Larger values of VIR_TEST_DEBUG may provide larger amounts of information: diff --git a/autobuild.sh b/autobuild.sh index 7da8cb5ed2..e5aa35ca33 100755 --- a/autobuild.sh +++ b/autobuild.sh @@ -18,6 +18,7 @@ cd build # Run with options not normally exercised by the rpm build, for # more complete code coverage. ../autogen.sh --prefix="$AUTOBUILD_INSTALL_ROOT" \ + --enable-expensive-tests \ --enable-test-coverage \ --disable-nls \ --enable-werror \ @@ -76,6 +77,7 @@ if test -x /usr/bin/i686-w64-mingw32-gcc ; then --build=$(uname -m)-w64-linux \ --host=i686-w64-mingw32 \ --prefix="$AUTOBUILD_INSTALL_ROOT/i686-w64-mingw32/sys-root/mingw" \ + --enable-expensive-tests \ --enable-werror \ --without-libvirtd \ --without-python @@ -96,6 +98,7 @@ if test -x /usr/bin/x86_64-w64-mingw32-gcc ; then --build=$(uname -m)-w64-linux \ --host=x86_64-w64-mingw32 \ --prefix="$AUTOBUILD_INSTALL_ROOT/x86_64-w64-mingw32/sys-root/mingw" \ + --enable-expensive-tests \ --enable-werror \ --without-libvirtd \ --without-python diff --git a/bootstrap.conf b/bootstrap.conf index f166a53eec..a1d1f07a72 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -244,9 +244,10 @@ gnulib_extra_files=" bootstrap_epilogue() { # Change paths in gnulib/tests/gnulib.mk from "../../.." to "../..", + # and make tests conditional by changing "TESTS" to "GNULIB_TESTS", # then ensure that gnulib/tests/Makefile.in is up-to-date. m=gnulib/tests/gnulib.mk - sed 's,\.\./\.\./\.\.,../..,g' $m > $m-t + sed 's,\.\./\.\./\.\.,../..,g; s/^TESTS /GNULIB_TESTS /' $m > $m-t mv -f $m-t $m ${AUTOMAKE-automake} gnulib/tests/Makefile } diff --git a/configure.ac b/configure.ac index 6cfb7e96c1..ac8cfa179e 100644 --- a/configure.ac +++ b/configure.ac @@ -2020,6 +2020,27 @@ fi AC_MSG_RESULT([$withval]) AM_CONDITIONAL([WITH_TESTS], [test "$withval" = "yes"]) +AC_ARG_ENABLE([expensive-tests], + [AC_HELP_STRING([--enable-expensive-tests], + [set the default for enabling expensive tests (gnulib and long timeouts) ] + [@<:@default=check@:>@; use VIR_TEST_EXPENSIVE to override during make])], + [case $enableval in + 0|no) VIR_TEST_EXPENSIVE_DEFAULT=0 ;; + 1|yes) VIR_TEST_EXPENSIVE_DEFAULT=1 ;; + check) ;; + *) AC_MSG_ERROR([bad value ${enableval} for enable-expensive-tests option]) + ;; + esac], [enableval=check]) +if test "$enableval" = check; then + if test -d $srcdir/.git ; then + VIR_TEST_EXPENSIVE_DEFAULT=0 + else + VIR_TEST_EXPENSIVE_DEFAULT=1 + fi +fi +AC_SUBST([VIR_TEST_EXPENSIVE_DEFAULT]) +AM_CONDITIONAL([WITH_EXPENSIVE_TESTS], [test $VIR_TEST_EXPENSIVE_DEFAULT = 1]) + AC_ARG_ENABLE([test-coverage], AC_HELP_STRING([--enable-test-coverage], [turn on code coverage instrumentation @<:@default=no@:>@]), [case "${enableval}" in diff --git a/docs/hacking.html.in b/docs/hacking.html.in index 8120b19802..0892b731af 100644 --- a/docs/hacking.html.in +++ b/docs/hacking.html.in @@ -118,6 +118,18 @@ variables.

+

+ Some tests are skipped by default in a development environment, + based on the time they take in comparison to the likelihood + that those tests will turn up problems during incremental builds. + These tests default to being run when when building from a + tarball or with the configure option --enable-expensive-tests; + you can also force a one-time toggle of these tests by + setting VIR_TEST_EXPENSIVE to 0 or 1 at make time, as in: +

+
+  make check VIR_TEST_EXPENSIVE=1
+

If you encounter any failing tests, the VIR_TEST_DEBUG environment variable may provide extra information to debug diff --git a/gnulib/tests/Makefile.am b/gnulib/tests/Makefile.am index 6a2f51bfd5..74d71e9f61 100644 --- a/gnulib/tests/Makefile.am +++ b/gnulib/tests/Makefile.am @@ -1,4 +1,4 @@ -## Makefile for gnulib/lib -*-Makefile-*- +## Makefile for gnulib/lib ## Copyright (C) 2011, 2013 Red Hat, Inc. ## @@ -19,3 +19,16 @@ include gnulib.mk INCLUDES = $(GETTEXT_CPPFLAGS) + +GNULIB_TESTS0 = +GNULIB_TESTS1 = $(GNULIB_TESTS) +if WITH_EXPENSIVE_TESTS +## Automake requires that at least one conditional call out all tests to +## be run, for those tests to be shipped in the tarball +TESTS = $(GNULIB_TESTS) +endif +## However, we want to change the set of tests based on the make environment, +## where the default was set at configure time. Use GNU make constructs to +## hide our actions from Automake, so we don't get it too confused. +VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT) +$(eval TESTS=$(GNULIB_TESTS$(VIR_TEST_EXPENSIVE))) diff --git a/libvirt.spec.in b/libvirt.spec.in index 054d9b8983..85881ae5f0 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -1410,6 +1410,7 @@ of recent versions of Linux (and other OSes). --with-qemu-user=%{qemu_user} \ --with-qemu-group=%{qemu_group} \ %{?enable_werror} \ + --enable-expensive-tests \ %{init_scripts} make %{?_smp_mflags} gzip -9 ChangeLog diff --git a/mingw-libvirt.spec.in b/mingw-libvirt.spec.in index aa3923104d..e13407e96a 100644 --- a/mingw-libvirt.spec.in +++ b/mingw-libvirt.spec.in @@ -156,8 +156,8 @@ autoreconf -if --without-parallels \ --without-netcf \ --without-audit \ - --without-dtrace - + --without-dtrace \ + --enable-expensive-tests %mingw_make %{?_smp_mflags} diff --git a/tests/Makefile.am b/tests/Makefile.am index 4aa02dd74c..6f43b09edc 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -307,6 +307,7 @@ lv_abs_top_builddir=`cd '$(top_builddir)'; pwd` path_add = $(subst :,$(PATH_SEPARATOR),\ $(subst !,$(lv_abs_top_builddir)/,!daemon:!tools:!tests)) +VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT) TESTS_ENVIRONMENT = \ abs_top_builddir=$(lv_abs_top_builddir) \ abs_top_srcdir=`cd '$(top_srcdir)'; pwd` \ @@ -318,6 +319,7 @@ TESTS_ENVIRONMENT = \ LIBVIRT_DRIVER_DIR="$(abs_top_builddir)/src/.libs" \ LIBVIRT_AUTOSTART=0 \ LC_ALL=C \ + VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \ $(VG)