[Top][All Lists]
[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