Re: pgsql: Require version 0.98 of Test::More for TAP tests - Mailing list pgsql-committers
From | Tom Lane |
---|---|
Subject | Re: pgsql: Require version 0.98 of Test::More for TAP tests |
Date | |
Msg-id | 3468629.1637516814@sss.pgh.pa.us Whole thread Raw |
In response to | Re: pgsql: Require version 0.98 of Test::More for TAP tests (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: pgsql: Require version 0.98 of Test::More for TAP tests
|
List | pgsql-committers |
I wrote: > Seems reasonable to me, although it's not entirely clear how to hook > the output into configure's practices --- in particular, people using > "./configure -q" might not be pleased by unwanted diagnostic output. > But that could probably be dealt with. Here's a draft patch based on Andrew's script. I'm not entirely satisfied with it, because I couldn't get the output to go where I wanted. I think that the reports of actual module versions should go to config.log, and not appear in configure's user-visible output, because (a) 99% of people won't care, and (b) otherwise we don't have a good way to silence them under -q, where 100% of people won't care. However, the only way I could get that to happen was to redirect prove's stderr to config.log (&AS_MESSAGE_LOG_FD), which is not great because it means that in the failure case the only place where any useful info appears is config.log. I tried printing the version reports to STDOUT instead of using diag(), but that seems to get redirected to /dev/null somewhere. Anybody know how to get prove to not do that? regards, tom lane diff --git a/config/check_modules.pl b/config/check_modules.pl new file mode 100644 index 0000000000..55b522c6a7 --- /dev/null +++ b/config/check_modules.pl @@ -0,0 +1,20 @@ +# +# Verify that required Perl modules are available, +# in at least the required minimum versions. +# (The required minimum versions are all quite ancient now, +# but specify them anyway for documentation's sake.) +# +use IPC::Run 0.79; +# While here, we might as well report exactly what versions we found. +diag("IPC::Run::VERSION: $IPC::Run::VERSION"); + +# Test::More and Time::HiRes are supposed to be part of core Perl, +# but some distros omit them in a minimal installation. +use Test::More 0.98; +diag("Test::More::VERSION: $Test::More::VERSION"); + +use Time::HiRes 1.52; +diag("Time::HiRes::VERSION: $Time::HiRes::VERSION"); + +ok(1); +done_testing(); diff --git a/configure b/configure index 977b4d3df5..c58c9ca051 100755 --- a/configure +++ b/configure @@ -19410,98 +19410,7 @@ fi # Check for test tools # if test "$enable_tap_tests" = yes; then - # Check for necessary modules, unless user has specified the "prove" to use; - # in that case it's her responsibility to have a working configuration. - # (prove might be part of a different Perl installation than perl, eg on - # MSys, so the result of AX_PROG_PERL_MODULES could be irrelevant anyway.) - if test -z "$PROVE"; then - # Test::More and Time::HiRes are supposed to be part of core Perl, - # but some distros omit them in a minimal installation. - # The required minimum versions are all quite ancient now, but specify - # them anyway for documentation's sake. - - - - - - - - - - -# Make sure we have perl -if test -z "$PERL"; then -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$PERL"; then - ac_cv_prog_PERL="$PERL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_PERL="perl" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -PERL=$ac_cv_prog_PERL -if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi - -if test "x$PERL" != x; then - ax_perl_modules_failed=0 - for ax_perl_module in 'IPC::Run 0.79' 'Test::More 0.98' 'Time::HiRes 1.52' ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 -$as_echo_n "checking for perl module $ax_perl_module... " >&6; } - - # Would be nice to log result here, but can't rely on autoconf internals - modversion=`$PERL -e "use $ax_perl_module; my \\\$x=q($ax_perl_module); \\\$x =~ s/ .*//; \\\$x .= q(::VERSION); evalqq{print \\\\$\\\$x\\n}; exit;" 2>/dev/null` - if test $? -ne 0; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; - ax_perl_modules_failed=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $modversion" >&5 -$as_echo "$modversion" >&6; }; - fi - done - - # Run optional shell commands - if test "$ax_perl_modules_failed" = 0; then - : - - else - : - as_fn_error $? "Additional Perl modules are required to run TAP tests" "$LINENO" 5 - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 -$as_echo "$as_me: WARNING: could not find perl" >&2;} -fi - fi - # Now make sure we know where prove is + # Make sure we know where prove is. if test -z "$PROVE"; then for ac_prog in prove do @@ -19559,6 +19468,20 @@ fi if test -z "$PROVE"; then as_fn_error $? "prove not found" "$LINENO" 5 fi + # Check for necessary Perl modules. You might think we should use + # AX_PROG_PERL_MODULES here, but prove might be part of a different Perl + # installation than perl, eg on MSys, so we have to check using prove. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl modules required for TAP tests" >&5 +$as_echo_n "checking for Perl modules required for TAP tests... " >&6; } + "$PROVE" "$srcdir/config/check_modules.pl" >&5 2>&1 + if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "Additional Perl modules are required to run TAP tests" "$LINENO" 5 + fi fi # If compiler will take -Wl,--as-needed (or various platform-specific diff --git a/configure.ac b/configure.ac index 95e5169c4f..90fed2f33b 100644 --- a/configure.ac +++ b/configure.ac @@ -2377,23 +2377,22 @@ PGAC_PATH_PROGS(DBTOEPUB, dbtoepub) # Check for test tools # if test "$enable_tap_tests" = yes; then - # Check for necessary modules, unless user has specified the "prove" to use; - # in that case it's her responsibility to have a working configuration. - # (prove might be part of a different Perl installation than perl, eg on - # MSys, so the result of AX_PROG_PERL_MODULES could be irrelevant anyway.) - if test -z "$PROVE"; then - # Test::More and Time::HiRes are supposed to be part of core Perl, - # but some distros omit them in a minimal installation. - # The required minimum versions are all quite ancient now, but specify - # them anyway for documentation's sake. - AX_PROG_PERL_MODULES([IPC::Run=0.79 Test::More=0.98 Time::HiRes=1.52], , - [AC_MSG_ERROR([Additional Perl modules are required to run TAP tests])]) - fi - # Now make sure we know where prove is + # Make sure we know where prove is. PGAC_PATH_PROGS(PROVE, prove) if test -z "$PROVE"; then AC_MSG_ERROR([prove not found]) fi + # Check for necessary Perl modules. You might think we should use + # AX_PROG_PERL_MODULES here, but prove might be part of a different Perl + # installation than perl, eg on MSys, so we have to check using prove. + AC_MSG_CHECKING(for Perl modules required for TAP tests) + "$PROVE" "$srcdir/config/check_modules.pl" >&AS_MESSAGE_LOG_FD 2>&1 + if test $? -eq 0; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + AC_MSG_ERROR([Additional Perl modules are required to run TAP tests]) + fi fi # If compiler will take -Wl,--as-needed (or various platform-specific
pgsql-committers by date: