Add configure --enable-tap-tests option
authorPeter Eisentraut <peter_e@gmx.net>
Sun, 2 Nov 2014 14:14:36 +0000 (09:14 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Sun, 2 Nov 2014 14:17:49 +0000 (09:17 -0500)
Don't skip the TAP tests anymore when IPC::Run is not found.  This will
fail normally now.

configure
configure.in
doc/src/sgml/installation.sgml
doc/src/sgml/regress.sgml
src/Makefile.global.in
src/test/perl/TestLib.pm

index bfa00366f66d1dc629deb19aeae6ffb7089716eb..53d2e08e74ea1492572c52df4d6d0e25be39ae03 100755 (executable)
--- a/configure
+++ b/configure
@@ -728,6 +728,7 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+enable_tap_tests
 enable_dtrace
 DTRACEFLAGS
 DTRACE
@@ -806,6 +807,7 @@ enable_debug
 enable_profiling
 enable_coverage
 enable_dtrace
+enable_tap_tests
 with_blocksize
 with_segsize
 with_wal_blocksize
@@ -1474,6 +1476,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
@@ -3436,6 +3439,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
 #
@@ -14655,7 +14686,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
   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
 
index 59614dac53dc7c12980759b08201880bedcbca64..617e7158eecbfc7ff6b500f33941112775526f91 100644 (file)
@@ -223,6 +223,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
 #
@@ -1908,7 +1915,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
 
index ec9d0593eca02774a65bf6e30d3888bc4f454b19..72e8979fff464de407d3a519df977273ffe6fcd2 100644 (file)
@@ -1271,6 +1271,16 @@ su - postgres
        </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>
 
index 13802e8f4194a568d662ff24875965d411031884..71196a1aca310161f15a50dfef236d53f679d37c 100644 (file)
@@ -676,7 +676,7 @@ make -C src/bin check PROVE_FLAGS='--reverse'
 
    <para>
     The tests written in Perl require the Perl
-    module <literal>IPC::Run</literal>, otherwise most tests will be skipped.
+    module <literal>IPC::Run</literal>.
     This module is available from CPAN or an operating system package.
    </para>
   </sect1>
index 8c1ee2e0858030816f70f6d886279600e4e7d2cc..aa54f94763e001762164d85e8ba41bcd061dfdea 100644 (file)
@@ -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@
index cdb5e31c362516ea553622cc212501040a7840e8..46a8bece1e50c9f1f561f87b54a139853aa506db 100644 (file)
@@ -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.