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: Stefano Lattarini
Subject: Re: [PATCH] {tests-init} Tests defs: improve messages for skipped tests.
Date: Thu, 11 Nov 2010 21:10:39 +0100
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

On Thursday 11 November 2010, Ralf Wildenhues wrote:
> * 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).
OK.

> 
> > +        echo "$me: this test shouldn't be run as root"
> 
> Please >&2, several instances.
I used stdout for "consistency" with messages like:
  echo "$me: running $CC --version"
  echo "$me: running python -V"
But I have no strong feelings on this matter, so I went along with
the ">&2" redirections throughout.

> 
> 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?
Agreed.

> 
> > +        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?
No, it's just for consistency.  Because sometimes the idiom
  test x"$foo" = x"bar"
is indeed required, I prefer to use it everywhere, instead of asking myself
at every turn "do I need to care for white spaces in $foo here?" or "do I
need to care for leading hypens in $foo here?".  That's all.

Do toy want me to use:
  test $WANT_NO_THREADS = yes
anyway?

> 
> > +        echo "$me: skip with Devel::Cover: it cannot cope with threads."
> 
> no final period (several more instances below).
All fixed.

> 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.
Well, we should use `test -z' at least, since the semantic of the check
has been reversed.  Also, `test -z' can sometimes be problematic too, and
I tend to avoid it altogheter for the same "consistency" resons stated
above.

Do you want me to use `tezt -z' anyway here?

> > +        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?
Giving precise resons about why the test was skipped.
 
> 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 '-'.
True, but see the "consistency" reasons stated above.  Do you want me to
revert to the  older (lack of) quoting anyway?
 
> > +          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"
> >      ;;

Regards,
   Stefano



reply via email to

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