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 \
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 \
+++ /dev/null
-#!/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 <<EOF
-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.
-
-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;
--- /dev/null
+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