Fix race condition in tests/bugs/signals.sh.
authorBen Pfaff <blp@gnu.org>
Wed, 22 Nov 2006 14:28:24 +0000 (14:28 +0000)
committerBen Pfaff <blp@gnu.org>
Wed, 22 Nov 2006 14:28:24 +0000 (14:28 +0000)
tests/ChangeLog
tests/bugs/signals.sh

index 41d15f5a7ee167611a84d2c278bc3ad92359fa37..d5d2305bebabd57d2b6340220a0b5f750485feb0 100644 (file)
@@ -1,3 +1,7 @@
+Wed Nov 22 06:28:04 2006  Ben Pfaff  <blp@gnu.org>
+
+       * tests/bugs/signals.sh: Fix race condition.
+
 Sun Nov 19 09:23:34 2006  Ben Pfaff  <blp@gnu.org>
 
        * automake.mk: Add the new tests listed below.
index a08aa9a574a73ee01b4f8d651d29a8ace49c2ea0..3c2cf941e8ae8b3c3c89c752175fb3a71cc012d1 100755 (executable)
@@ -27,9 +27,6 @@ cleanup()
        return ; 
      fi
      rm -rf $TEMPDIR
-
-     # Kill any remaining children of this shell
-     kill `ps h --ppid $$ | awk '{print $1}'` 2> /dev/null
 }
 
 
@@ -60,41 +57,20 @@ mkdir -p $TEMPDIR
 
 cd $TEMPDIR
 
-
-activity="run program in interactive mode"
-cat | $PSPP --testing-mode -o raw-ascii 2> $TEMPDIR/stderr1  > /dev/null & 
-thepid1=$!
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="run program in interactive mode 2"
-cat | $PSPP --testing-mode -o raw-ascii 2> $TEMPDIR/stderr2  > /dev/null & 
-thepid2=$!
-if [ $? -ne 0 ] ; then no_result ; fi
-
-# This one is a dummy.  Despite the sleep command,  it may not be enought 
-# to ensure that the preceeding pspp has actually initialised itself.
-activity="run program in interactive mode 3"
-cat | $PSPP --testing-mode -o raw-ascii 2> /dev/null  > /dev/null & sleep 1
-thepid3=$!
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="sending SIGINT to pspp1"
-kill -INT $thepid1
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="sending SIGSEGV to pspp2"
-kill -SEGV $thepid2
+activity="sending SIGINT to pspp"
+echo 'host kill -INT $PPID' | $PSPP --testing-mode -o raw-ascii > /dev/null 2> $TEMPDIR/stderr1
 if [ $? -ne 0 ] ; then no_result ; fi
 
-
 # SIGINT should have caused a clean shutdown
-
 activity="checking for absence of error messages 1"
 [ ! -s $TEMPDIR/stderr1 ]  
 if [ $? -ne 0 ] ; then fail ; fi
 
-# SIGSEGV should have caused an error message
+activity="sending SIGSEGV to pspp"
+echo 'host kill -SEGV $PPID' | $PSPP --testing-mode -o raw-ascii > /dev/null 2> $TEMPDIR/stderr2
+if [ $? -eq 0 ] ; then no_result ; fi
 
+# SIGSEGV should have caused an error message
 activity="checking for error messages from pspp 2"
 head -8 $TEMPDIR/stderr2 > $TEMPDIR/stderr-head
 if [ $? -ne 0 ] ; then no_result ; fi