On 10/28/14 10:01 PM, Peter Eisentraut wrote: > On 10/28/14 9:16 PM, Tom Lane wrote: >> ISTM that the project policy for external components like this has been >> "don't rely on them unless user says to use them, in which case fail if >> they aren't present". So perhaps what we ought to have is a configure >> switch along the lines of "--enable-tap-tests". If you don't specify it, >> prove_check expands to nothing. If you do specify it, we fail if we >> lack any of the expected support, both "prove" and whatever the agreed-on >> set of Perl modules is. > > That's also a good idea.
Here is a patch.
>From 27b303938e4472c1a28f216978c847aed5750ced Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <pete...@gmx.net> Date: Thu, 30 Oct 2014 20:08:45 -0400 Subject: [PATCH] Add configure --enable-tap-tests option --- configure | 41 ++++++++++++++++++++++++++++++++++++++++- configure.in | 17 ++++++++++++++++- doc/src/sgml/installation.sgml | 10 ++++++++++ src/Makefile.global.in | 8 ++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 1248b06..1b29be6 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) --enable-depend turn on automatic dependency tracking --enable-cassert enable assertion checks (for debugging) --disable-thread-safety disable thread-safety in client libraries @@ -3466,6 +3469,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 # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for block size" >&5 @@ -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 0a3725f..fe6f735 100644 --- a/configure.in +++ b/configure.in @@ -229,6 +229,13 @@ AC_SUBST(DTRACEFLAGS)]) AC_SUBST(enable_dtrace) # +# TAP tests +# +PGAC_ARG_BOOL(enable, tap-tests, no, + [enable TAP tests (requires Perl)]) +AC_SUBST(enable_tap_tests) + +# # Block size # AC_MSG_CHECKING([for 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 68931d2..adde5b3 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1271,6 +1271,16 @@ <title>Configuration</title> </listitem> </varlistentry> + <varlistentry> + <term><option>--enable-tap-tests</option></term> + <listitem> + <para> + Enable tests using the Perl TAP tools. This requires a Perl + installation and the Perl module <literal>IPC::Run</literal>. + See <xref linkend="regress-tap"> for more information. + </para> + </listitem> + </varlistentry> </variablelist> </para> diff --git a/src/Makefile.global.in b/src/Makefile.global.in index b04d005..63ff50b 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@ -- 2.1.2
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers