From: Ben Pfaff Date: Sun, 10 Oct 2010 21:19:28 +0000 (-0700) Subject: tests: Convert tests for signal handling to Autotest framework. X-Git-Tag: v0.7.6~54 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e37a4f7dc77ef11bc63886f40ded6d1d541a184;p=pspp-builds.git tests: Convert tests for signal handling to Autotest framework. --- diff --git a/tests/automake.mk b/tests/automake.mk index 90b76d9b..e7a802e6 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -27,7 +27,6 @@ dist_TESTS = \ tests/formats/wkday-in.sh \ tests/formats/wkday-out.sh \ tests/formats/360.sh \ - tests/bugs/signals.sh \ tests/bugs/temporary.sh \ tests/bugs/unwritable-dir.sh \ tests/bugs/val-labs.sh \ diff --git a/tests/bugs/signals.sh b/tests/bugs/signals.sh deleted file mode 100755 index 20ca0700..00000000 --- a/tests/bugs/signals.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh - -# This program tests that signals are properly caught and handled by PSPP - -TEMPDIR=/tmp/pspp-tst-$$ -TESTFILE=$TEMPDIR/`basename $0`.sps - -# ensure that top_srcdir and top_builddir are absolute -if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi -if [ -z "$top_builddir" ] ; then top_builddir=. ; fi -top_srcdir=`cd $top_srcdir; pwd` -top_builddir=`cd $top_builddir; pwd` - -PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT - -STAT_CONFIG_PATH=$top_srcdir/config -export STAT_CONFIG_PATH - -LANG=C -export LANG - - -cleanup() -{ - if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then - echo "NOT cleaning $TEMPDIR" - return ; - fi - cd / - rm -rf $TEMPDIR -} - - -fail() -{ - echo $activity - echo FAILED - cleanup; - exit 1; -} - - -no_result() -{ - echo $activity - echo NO RESULT; - cleanup; - exit 2; -} - -pass() -{ - cleanup; - exit 0; -} - -mkdir -p $TEMPDIR - -cd $TEMPDIR - -activity="sending SIGINT to pspp" -echo 'host command=["kill -INT $PPID"].' | $PSPP -o pspp.csv > /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 - -activity="sending SIGSEGV to pspp" -echo 'host command=["kill -SEGV $PPID"].' | $PSPP -o pspp.csv > /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 - -activity="comparing error messages from pspp 2" -diff $TEMPDIR/stderr-head - << EOF -****************************************************** -You have discovered a bug in PSPP. Please report this -to bug-gnu-pspp@gnu.org. Please include this entire -message, *plus* several lines of output just above it. -For the best chance at having the bug fixed, also -include the syntax file that triggered it and a sample -of any data file used for input. -proximate cause: Segmentation Violation -EOF -if [ $? -ne 0 ] ; then fail ; fi - - -pass; diff --git a/tests/ui/terminal/main.at b/tests/ui/terminal/main.at index 1ee82268..38a88eca 100644 --- a/tests/ui/terminal/main.at +++ b/tests/ui/terminal/main.at @@ -5,3 +5,34 @@ AT_CHECK([pspp nonexistent], [1], [error: Opening `nonexistent': No such file or directory. ]) AT_CLEANUP + +AT_SETUP([SIGTERM yields clean shutdown]) +AT_DATA([main.sps], [dnl +INPUT PROGRAM. +COMPUTE x = x + 1. +DO IF x = 10000. +END CASE. +ELSE IF x < 0. +END FILE. +END IF. +END INPUT PROGRAM. +EXECUTE. +]) +AT_CHECK([pspp main.sps & sleep 1; kill $!; wait $!], [143], [], [ignore]) +AT_CLEANUP + +AT_SETUP([SIGSEGV yields error report]) +AT_CHECK([[echo 'host command=["kill -SEGV $PPID"].' | pspp -O format=csv]], + [139], [], [stderr]) +AT_DATA([expout], [dnl +****************************************************** +You have discovered a bug in PSPP. Please report this +to bug-gnu-pspp@gnu.org. Please include this entire +message, *plus* several lines of output just above it. +For the best chance at having the bug fixed, also +include the syntax file that triggered it and a sample +of any data file used for input. +proximate cause: Segmentation Violation +]) +AT_CHECK([sed '/proximate/q' < stderr], [0], [expout]) +AT_CLEANUP