From a409b464f91e0bdf61f2b3fb81218a0e4312987b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 2 Nov 2014 09:14:36 -0500 Subject: [PATCH] Add configure --enable-tap-tests option Don't skip the TAP tests anymore when IPC::Run is not found. This will fail normally now. --- configure | 41 +++++++++++++++++++++++++++++++++- configure.in | 17 +++++++++++++- doc/src/sgml/installation.sgml | 10 +++++++++ doc/src/sgml/regress.sgml | 2 +- src/Makefile.global.in | 8 +++++++ src/test/perl/TestLib.pm | 12 +--------- 6 files changed, 76 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 1248b06066..c4f70e806e 100755 --- a/configure +++ b/configure @@ -729,6 +729,7 @@ CPPFLAGS LDFLAGS CFLAGS CC +enable_tap_tests enable_dtrace DTRACEFLAGS DTRACE @@ -808,6 +809,7 @@ enable_debug enable_profiling enable_coverage enable_dtrace +enable_tap_tests with_blocksize with_segsize with_wal_blocksize @@ -1477,6 +1479,7 @@ Optional Features: --enable-profiling build with profiling enabled --enable-coverage build with coverage testing instrumentation --enable-dtrace build with DTrace support + --enable-tap-tests enable TAP tests (requires Perl and IPC::Run) --enable-depend turn on automatic dependency tracking --enable-cassert enable assertion checks (for debugging) --disable-thread-safety disable thread-safety in client libraries @@ -3465,6 +3468,34 @@ fi +# +# TAP tests +# + + +# Check whether --enable-tap-tests was given. +if test "${enable_tap_tests+set}" = set; then : + enableval=$enable_tap_tests; + case $enableval in + yes) + : + ;; + no) + : + ;; + *) + as_fn_error $? "no argument expected for --enable-tap-tests option" "$LINENO" 5 + ;; + esac + +else + enable_tap_tests=no + +fi + + + + # # Block size # @@ -14785,7 +14816,8 @@ done # # Check for test tools # -for ac_prog in prove +if test "$enable_tap_tests" = yes; then + for ac_prog in prove do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -14827,6 +14859,13 @@ fi test -n "$PROVE" && break done + if test -z "$PROVE"; then + as_fn_error $? "prove not found" "$LINENO" 5 + fi + if test -z "$PERL"; then + as_fn_error $? "Perl not found" "$LINENO" 5 + fi +fi # Thread testing diff --git a/configure.in b/configure.in index 0a3725fbbd..2465f26d31 100644 --- a/configure.in +++ b/configure.in @@ -228,6 +228,13 @@ fi AC_SUBST(DTRACEFLAGS)]) AC_SUBST(enable_dtrace) +# +# TAP tests +# +PGAC_ARG_BOOL(enable, tap-tests, no, + [enable TAP tests (requires Perl and IPC::Run)]) +AC_SUBST(enable_tap_tests) + # # Block size # @@ -1876,7 +1883,15 @@ AC_CHECK_PROGS(OSX, [osx sgml2xml sx]) # # Check for test tools # -AC_CHECK_PROGS(PROVE, prove) +if test "$enable_tap_tests" = yes; then + AC_CHECK_PROGS(PROVE, prove) + if test -z "$PROVE"; then + AC_MSG_ERROR([prove not found]) + fi + if test -z "$PERL"; then + AC_MSG_ERROR([Perl not found]) + fi +fi # Thread testing diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 68931d25b6..adde5b39d2 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1271,6 +1271,16 @@ su - postgres + + + + + Enable tests using the Perl TAP tools. This requires a Perl + installation and the Perl module IPC::Run. + See for more information. + + + diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index 13802e8f41..71196a1aca 100644 --- a/doc/src/sgml/regress.sgml +++ b/doc/src/sgml/regress.sgml @@ -676,7 +676,7 @@ make -C src/bin check PROVE_FLAGS='--reverse' The tests written in Perl require the Perl - module IPC::Run, otherwise most tests will be skipped. + module IPC::Run. This module is available from CPAN or an operating system package. diff --git a/src/Makefile.global.in b/src/Makefile.global.in index b04d0055a3..63ff50b1dc 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -174,6 +174,7 @@ enable_nls = @enable_nls@ enable_debug = @enable_debug@ enable_dtrace = @enable_dtrace@ enable_coverage = @enable_coverage@ +enable_tap_tests = @enable_tap_tests@ enable_thread_safety = @enable_thread_safety@ python_enable_shared = @python_enable_shared@ @@ -310,6 +311,8 @@ define ld_library_path_var $(if $(filter $(PORTNAME),darwin),DYLD_LIBRARY_PATH,$(if $(filter $(PORTNAME),aix),LIBPATH,LD_LIBRARY_PATH)) endef +ifeq ($(enable_tap_tests),yes) + define prove_installcheck cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(bindir):$$PATH" PGPORT='6$(DEF_PGPORT)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl endef @@ -320,6 +323,11 @@ $(MAKE) -C $(top_builddir) DESTDIR='$(CURDIR)'/tmp_check/install install >'$(CUR cd $(srcdir) && TESTDIR='$(CURDIR)' PATH="$(CURDIR)/tmp_check/install$(bindir):$$PATH" $(call add_to_path,$(ld_library_path_var),$(CURDIR)/tmp_check/install$(libdir)) PGPORT='6$(DEF_PGPORT)' $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) t/*.pl endef +else +prove_installcheck = @echo "TAP tests not enabled" +prove_check = $(prove_installcheck) +endif + # Installation. install_bin = @install_bin@ diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index cdb5e31c36..46a8bece1e 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -25,19 +25,9 @@ our @EXPORT = qw( use Cwd; use File::Spec; use File::Temp (); +use IPC::Run qw(run start); use Test::More; -BEGIN -{ - eval { - require IPC::Run; - import IPC::Run qw(run start); - 1; - } or do - { - plan skip_all => "IPC::Run not available"; - }; -} # Set to untranslated messages, to be able to compare program output # with expected strings.