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 817faffd4a..a84d413970 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2047,6 +2047,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 7fcc3fd1cc..0235718ed9 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1383,6 +1383,7 @@ of recent versions of Linux (and other OSes).
--with-qemu-user=%{qemu_user} \
--with-qemu-group=%{qemu_group} \
%{init_scripts}
+ --enable-expensive-tests \
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 fe408c077b..f10bf16db6 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -310,6 +310,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` \
@@ -321,6 +322,7 @@ TESTS_ENVIRONMENT = \
LIBVIRT_DRIVER_DIR="$(abs_top_builddir)/src/.libs" \
LIBVIRT_AUTOSTART=0 \
LC_ALL=C \
+ VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
$(VG)