automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] {tests-init} Tests defs: improve messages for skipped tests.


From: Ralf Wildenhues
Subject: Re: [PATCH] {tests-init} Tests defs: improve messages for skipped tests. (was: Re: [PATCH 5/5] Tests defs: improve messages for skipped tests.)
Date: Thu, 11 Nov 2010 20:30:01 +0100
User-agent: Mutt/1.5.20 (2010-08-04)

* Stefano Lattarini wrote on Thu, Nov 11, 2010 at 02:52:06PM CET:
> Tests defs: improve messages for skipped tests.
> 
> * tests/defs: Give meaningful messages about the reasons of a
> test skip; this is especially useful as this file is run without
> verbose xtraces on.  Related reorderings in the code and new
> comments.

I have some nits below, and a couple of questions.

Thanks,
Ralf

> --- a/tests/defs
> +++ b/tests/defs
> @@ -192,6 +192,7 @@ do
>        export GCJ
>        echo "$me: running $GCJ --version"
>        ( $GCJ --version ) || exit 77
> +      echo "$me: running $GCJ -v"
>        ( $GCJ -v ) || exit 77
>        ;;
>      g++)
> @@ -228,11 +229,16 @@ do
>        (echo foo >> $priv_check_temp) >/dev/null 2>&1
>        overwrite_status=$?
>        rm -f $priv_check_temp
> -      test $overwrite_status = 0 && exit 77
> +      if test $overwrite_status = 0; then

-eq seems more appropriate than = (more instances below).

> +        echo "$me: this test shouldn't be run as root"

Please >&2, several instances.

Also, the message could be more precise, as it will also trigger on
systems without unix style permissions.  How about the following:
  $me: cannot drop file write permissions

and similar for ro-dir below?

> +        exit 77
> +      fi
>        ;;
>      perl-threads)
> -      # Skip with Devel::Cover: it cannot cope with threads.
> -      test "$WANT_NO_THREADS" = yes && exit 77
> +      if test x"$WANT_NO_THREADS" = x"yes"; then

no need to quote `yes', and in practice, no need for x prefixing either,
I would guess.  Do you think we need to take care of malicious users?

> +        echo "$me: skip with Devel::Cover: it cannot cope with threads."

no final period (several more instances below).
I'd drop the 'it'.

> +        exit 77
> +      fi
>        ;;
>      python)
>        # Python doesn't support --version, it has -V
> @@ -248,7 +254,10 @@ do
>        (: > $ro_dir_temp/probe) >/dev/null 2>/dev/null
>        create_status=$?
>        rm -rf $ro_dir_temp
> -      test $create_status = 0 && exit 77
> +      if test $create_status = 0; then
> +        echo "$me: support of read-only directories is required"
> +        exit 77
> +      fi
>        ;;
>      rst2html)
>        # Try the variants that are tried in check.am.
> @@ -257,6 +266,7 @@ do
>            echo "$me: running $r2h --version"
>            $r2h --version && break 2
>          done
> +        echo "$me: no proper rst2html program found"
>          exit 77
>        done
>        ;;
> @@ -264,13 +274,16 @@ do
>        # DejaGnu's runtest program. We rely on being able to specify
>        # the program on the runtest command-line. This requires
>        # DejaGnu 1.4.3 or later.
> -      echo "$me: running runtest --version"
> +      echo "$me: running runtest SOMEPROGRAM=someprogram --version"
>        (runtest SOMEPROGRAM=someprogram --version) || exit 77
>        ;;
>      tex)
>        # No all versions of Tex support `--version', so we use
>        # a configure check.
> -      test -n "$TEX" || exit 77
> +      if test x"$TEX" = x; then

test -n is portable here and more concise, $TEX will never start with
a '-' character or be equal to '=' for any sane user.  So let's please
keep that.

> +        echo "$me: TeX is required, but it wasn't found by configure"
> +        exit 77
> +      fi
>        ;;
>      texi2dvi-o)
>        # Texi2dvi supports `-o' since Texinfo 4.1.
> @@ -285,6 +298,37 @@ do
>    esac
>  done

The rest of the patch from here on below seems to only transpose testing
of $required and testing of some other variable.  In essence for the
default case it turns one case statement into three (thus a minor
slowdown), little code into more code, and I fail to see the advantage
of the new ordering.  What is the intention here?

Sorry for sounding grumpy, I may just be overlooking something here.

> +# Using just `$testbuilddir' for the check here is ok, since the
> +# further temporary subdirectory where the test will be run is
> +# ensured not to contain any whitespace character.
> +case $testbuilddir in
> +  *\ *|*\    *)
> +    case " $required " in
> +      *' libtool '* | *' libtoolize '* )
> +        echo "$me: libtool/libtoolized cannot cope correctly"
> +        echo "$me: with spaces in the build tree."
> +        exit 77
> +        ;;
> +    esac
> +    ;;
> +esac
> +
> +# This test is necessary, although Automake's configure script bails out
> +# when $srcdir contains spaces.  This is because $testsrcdir is in not
> +# configure-time $srcdir, but is instead configure-time $abs_srcdir, and
> +# that is allowed to contain spaces.
> +case $testsrcdir in
> +  *\ * |*\   *)
> +    case " $required " in
> +      *' libtool '* | *' libtoolize '* | *' gettext '* )
> +        echo "$me: our testsuite setup cannot cope correctly with spaces"
> +        echo "$me: in the source tree for libtool/gettext tests."
> +        exit 77
> +        ;;
> +   esac
> +   ;;
> +esac
> +
>  # We might need extra macros, e.g., from Libtool or Gettext.
>  # Find them on the system.
>  # Use `-I $top_testsrcdir/m4' in addition to `--acdir=$top_testsrcdir/m4',
> @@ -315,16 +359,20 @@ case " $required " in
>        fi
>      done
>      case " $required " in
> -      *' libtool '* | *' libtoolize '* ) test $libtool_found = yes || exit 
> 77;;
> -      *' gettext '* ) test $gettext_found = yes || exit 77;;
> -    esac
> -    # Libtool cannot cope with spaces in the build tree.  Our testsuite setup
> -    # cannot cope with spaces in the source tree name for Libtool and gettext
> -    # tests.  Using just `$testbuilddir' for the check here is ok, since the
> -    # further temporary subdirectory where the test will be run is ensured 
> not
> -    # to contain any space.
> -    case $testsrcdir,$testbuilddir in
> -      *\ * | *\      *) exit 77;;
> +      *' libtool '*|*' libtoolize '*)
> +        if test x"$libtool_found" != x"yes"; then

The old code was perfectly well quoted: in
  test $libtool_found = yes

you would reliably and helpfully get a shell error if $libtool_found was
erroneously unset.  Also, we ensure that it could not start with '-'.

> +          echo "$me: libtool/libtoolize is required, but libtool.m4 wasn't"
> +          echo "$me: found in directories $aclocaldir $extra_includes"
> +          exit 77
> +        fi
> +        ;;
> +      *' gettext '*)
> +        if test x"$gettext_found" != x"yes"; then
> +          echo "$me: gettext is required, but gettext.m4 wasn't found"
> +          echo "$me: in directories $aclocaldir $extra_includes"
> +          exit 77
> +        fi
> +        ;;
>      esac
>      ACLOCAL="$ACLOCAL -Wno-syntax -I $top_testsrcdir/m4 $extra_includes -I 
> $aclocaldir"
>      ;;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]