From 8159578bed82977fcd390dc52f7921d8f15979c9 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 10 Oct 2010 13:05:40 -0700 Subject: [PATCH] tests: Convert expression parsing test to Autotest framework. --- tests/automake.mk | 2 +- tests/bugs/if_crash.sh | 87 ----------------------------- tests/language/expressions/parse.at | 23 ++++++++ 3 files changed, 24 insertions(+), 88 deletions(-) delete mode 100755 tests/bugs/if_crash.sh create mode 100644 tests/language/expressions/parse.at diff --git a/tests/automake.mk b/tests/automake.mk index b043ef93..ffcf6a26 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/if_crash.sh \ tests/bugs/multipass.sh \ tests/bugs/overwrite-input-file.sh \ tests/bugs/overwrite-special-file.sh \ @@ -327,6 +326,7 @@ TESTSUITE_AT = \ tests/language/dictionary/vector.at \ tests/language/dictionary/weight.at \ tests/language/expressions/evaluate.at \ + tests/language/expressions/parse.at \ tests/language/lexer/q2c.at \ tests/language/lexer/variable-parser.at \ tests/language/stats/aggregate.at \ diff --git a/tests/bugs/if_crash.sh b/tests/bugs/if_crash.sh deleted file mode 100755 index 3abe22a0..00000000 --- a/tests/bugs/if_crash.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/sh - -# This program tests for a bug which crashed pspp when using an expression -# comprising an unknown variable. - -TEMPDIR=/tmp/pspp-tst-$$ -TESTFILE=$TEMPDIR/`basename $0`.sps - -# ensure that top_builddir are absolute -if [ -z "$top_builddir" ] ; then top_builddir=. ; fi -if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi -top_builddir=`cd $top_builddir; pwd` -PSPP=$top_builddir/src/ui/terminal/pspp$EXEEXT - -# ensure that top_srcdir is absolute -top_srcdir=`cd $top_srcdir; pwd` - -STAT_CONFIG_PATH=$top_srcdir/config -export STAT_CONFIG_PATH - - -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="create program" -cat > $TESTFILE < 0 ) . -COMPUTE x=y. -END IF. - -EOF -if [ $? -ne 0 ] ; then no_result ; fi - - -# The above input is invalid. -# So this will have a non zero error status. -# But it shouldn't crash! -activity="run_program" -$SUPERVISOR $PSPP -o pspp.csv -e /dev/null $TESTFILE -if [ $? -ne 1 ] ; then fail ; fi - - -pass; diff --git a/tests/language/expressions/parse.at b/tests/language/expressions/parse.at new file mode 100644 index 00000000..7ebc5dc1 --- /dev/null +++ b/tests/language/expressions/parse.at @@ -0,0 +1,23 @@ +AT_BANNER([expression parsing]) + +AT_SETUP([parse expression with unknown variable crash]) +AT_DATA([parse.sps], [dnl +INPUT PROGRAM. +LOOP c=1 to 10. +COMPUTE var1=NORMAL(100). +END CASE. +END LOOP. +END FILE. +END INPUT PROGRAM. + + +IF ( y > 0 ) . +COMPUTE x=y. +END IF. +]) +AT_CHECK([pspp -O format=csv parse.sps], [1], [dnl +parse.sps:10: error: IF: Unknown identifier y. + +parse.sps:10: error: Stopping syntax file processing here to avoid a cascade of dependent command failures. +]) +AT_CLEANUP -- 2.30.2