automake-patches
[Top][All Lists]
Advanced

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

Re: [PATCH] {master} tests: add testcases sanity-checking the testsuite


From: Stefano Lattarini
Subject: Re: [PATCH] {master} tests: add testcases sanity-checking the testsuite
Date: Fri, 25 Feb 2011 10:03:52 +0100
User-agent: KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; )

On Friday 25 February 2011, Ralf Wildenhues wrote:
> * Stefano Lattarini wrote on Thu, Feb 24, 2011 at 11:25:18PM CET:
> > On Thursday 24 February 2011, Ralf Wildenhues wrote:
> > > What does the S_ prefix stand for?  Sanity?
> > >
> > Yes (or also "self-check").  It also ensures (when LC_COLLATE=C or
> > equivalent) that the new testcases are listed earlier by e.g. ls or
> > shell wildcarding, and that are run early, (mostly) before all the
> > other testcases.
> > 
> > > Well, we can keep (or lose) our sanity over all kinds of things.  ;-)
> > > How about 'defs-' as prefix, or maybe 'suite-'?
> > >
> > Weren't you the one fond of shorter test names? ;-)
> 
> Yes, but only those I already knew.  ;->
> 
> > Kidding aside, I'd rather keep the new testcases standing out more
> > clearly (as they do with the current `S_' prefix).  So for the moment
> > I haven't renamed them.  But feel free to advance other proposals, or
> > to override my decision if the current naming really bothers you.
> 
> How about 'self-' as prefix, or maybe even 'self-check-' then?
>
'self-check-' is definitely good enough.  I went for it.

> With S_, there is really no clue to understand, and also underscores
> are harder to type.  You might laugh at this argument, but look around
> GNU code how it tends to prefer hyphen over underscore whenever possible
> (and rejects capitalized names).
> 
> > I'll push in 72 hours if there are no further inputs or objections.
> 
> Well, one issue I noticed, and one general comment:
> Please try your tests when $sh_errexit_works is "no" (you can fake
> that), fix the fallout.
>
Well caught.  Done in the attached squash-in (which BTW also fixes
an unrelated bug in `exit.test' due to a weird Korn shell interation
with SIGINT).

> Generally, you can't test the testsuite internals with absolute
> certainty from within.  Say, there is a bug that lets every test
> pass: you will not notice it without some manual looking at logs.
>
Well, the test `S_exit.test' (now `self-check-exit.test') should help
to avoid such a situation (not with a 100% certainity, but such a
certainity has never been my aim anyway).   Also, it's quite usual
for me to run tests from the command line, so I guess I might notice
that something is wrong with the trestsuite by looking at the output
on the screen.

> (XFAILing tests can be of help here, but only if the suite is not
> buggy to mis-detect them too.)
> 
> Thanks,
> Ralf
> 

I'll push in 24 hours if there's no further objection.

Thanks,
    Stefano
diff --git a/tests/self-check-cleanup.test b/tests/self-check-cleanup.test
index 7fdde51..92a203e 100755
--- a/tests/self-check-cleanup.test
+++ b/tests/self-check-cleanup.test
@@ -19,6 +19,11 @@
 
 . ./defs || Exit 1
 
+if test x"$sh_errexit_works" != x"yes"; then
+  echo "$me: the shell can't have a working exit trap with 'set -e'" >&2
+  Exit 77
+fi
+
 # We still need a little hack to make ./defs work outside automake's
 # tree `tests' subdirectory.  Not a big deal.
 sed "s|^testbuilddir=.*|testbuilddir='`pwd`'|" ../defs-static >defs-static
diff --git a/tests/self-check-exit.test b/tests/self-check-exit.test
index 25a7219..73f3ea5 100755
--- a/tests/self-check-exit.test
+++ b/tests/self-check-exit.test
@@ -19,6 +19,8 @@
 # passed to the exit trap installed by the `./defs' script.
 # Also check that the `errexit' shell flag is active.
 
+. ./defs-static || exit 99
+
 for st in 1 2 3 4 5 77 99 126 127 128 129 130 255; do
 
   echo "* Try: Exit $st"
@@ -47,11 +49,31 @@ test $rc -eq 127 || exit 1
 for sig in 1 2 13 15; do
 
   echo "* Try: kill -$sig \$\$"
+  if test $sig -eq 2; then
+    # Some Korn shells might otherwise get a spurious SIGINT
+    # signal when one is sent to the child $SHELL.
+    trap : 2
+  fi
   $SHELL -c  ". ./defs; kill -$sig \$\$; :"
   rc=$?
+  if test $sig -eq 2; then
+    # Reset default SIGINT handler as portably as possible.
+    trap 2 || trap - 2
+  fi
   echo "* rc=$rc"
   echo
-  test $rc -eq 99 || exit 1
+  if test x"$sh_errexit_works" = x"yes"; then
+    # The exit trap should turn into an hard errors any failure
+    # caused by signals.
+    test $rc -eq 99 || exit 1
+  else
+    # The exit trap is not installed, so that the shell should exit
+    # with status 128+n when receiving signal number n.  But don't
+    # be too strict in the check, as POSIX only says that "The exit
+    # status of a command that terminated because it received a
+    # signal shall be reported as greater than 128".
+    test $rc -gt 128 || exit 1
+  fi
 
 done
 

reply via email to

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