From: Ben Pfaff <blp@cs.stanford.edu> Date: Sat, 25 Sep 2010 23:33:01 +0000 (-0700) Subject: tests: Convert do-repeat.sh test to use Autotest. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d6e4461802aa4bcc06a457c3419d544117c1df90;p=pspp tests: Convert do-repeat.sh test to use Autotest. --- diff --git a/tests/automake.mk b/tests/automake.mk index b367984eae..a873a7265d 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -10,7 +10,6 @@ TESTS_ENVIRONMENT += LC_ALL=C TESTS_ENVIRONMENT += EXEEXT=$(EXEEXT) dist_TESTS = \ - tests/command/do-repeat.sh \ tests/command/erase.sh \ tests/command/examine.sh \ tests/command/examine-extremes.sh \ @@ -94,7 +93,6 @@ dist_TESTS = \ tests/bugs/compression.sh \ tests/bugs/curtailed.sh \ tests/bugs/data-crash.sh \ - tests/bugs/empty-do-repeat.sh \ tests/bugs/get.sh \ tests/bugs/examine-crash.sh \ tests/bugs/examine-crash2.sh \ @@ -395,6 +393,7 @@ TESTSUITE_AT = \ tests/data/calendar.at \ tests/data/data-in.at \ tests/language/control/do-if.at \ + tests/language/control/do-repeat.at \ tests/language/data-io/add-files.at \ tests/language/data-io/data-list.at \ tests/language/data-io/data-reader.at \ diff --git a/tests/bugs/empty-do-repeat.sh b/tests/bugs/empty-do-repeat.sh deleted file mode 100755 index 15ef6bebc3..0000000000 --- a/tests/bugs/empty-do-repeat.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -# This program tests for a bug that crashed PSPP given an empty DO -# REPEAT...END REPEAT block. See bug #18407. - -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 > $TEMPDIR/repeat.stat <<EOF -DATA LIST NOTABLE /a 1. -BEGIN DATA. -0 -END DATA. - -DO REPEAT h = a. -END REPEAT. -EOF -if [ $? -ne 0 ] ; then no_result ; fi - -# Must not crash. -activity="run program" -$SUPERVISOR $PSPP -o pspp.csv $TEMPDIR/repeat.stat -if [ $? -ne 0 ] ; then fail ; fi - -pass; diff --git a/tests/command/do-repeat.sh b/tests/command/do-repeat.sh deleted file mode 100755 index f5999dc797..0000000000 --- a/tests/command/do-repeat.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/sh - -# This program tests the DO REPEAT command. - -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 -DATA LIST NOTABLE /a 1. -BEGIN DATA. -0 -END DATA. - -DO REPEAT h = h0 TO h3 / x = 0 TO 3 / y = 8, 7.5, 6, 5. - COMPUTE h = x + y. -END REPEAT. - -VECTOR v(6). -COMPUTE #idx = 0. -DO REPEAT i = 1 TO 2. - DO REPEAT j = 3 TO 5. - COMPUTE #x = i + j. - COMPUTE #idx = #idx + 1. - COMPUTE v(#idx) = #x. - END REPEAT. -END REPEAT. - -LIST. - -EOF -if [ $? -ne 0 ] ; then no_result ; fi - -activity="run program" -$SUPERVISOR $PSPP -o pspp.csv $TESTFILE -if [ $? -ne 0 ] ; then no_result ; fi - -activity="compare results" -perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.csv -diff -b $TEMPDIR/pspp.csv - <<EOF -Table: Data List -a,h0,h1,h2,h3,v1,v2,v3,v4,v5,v6 -0,8.00,8.50,8.00,8.00,4.00,5.00,6.00,5.00,6.00,7.00 -EOF -if [ $? -ne 0 ] ; then fail ; fi - - -pass diff --git a/tests/language/control/do-repeat.at b/tests/language/control/do-repeat.at new file mode 100644 index 0000000000..8f300dc95e --- /dev/null +++ b/tests/language/control/do-repeat.at @@ -0,0 +1,49 @@ +AT_BANNER([DO REPEAT]) + +AT_SETUP([DO REPEAT -- ordinary]) +AT_DATA([do-repeat.sps], [dnl +DATA LIST NOTABLE /a 1. +BEGIN DATA. +0 +END DATA. + +DO REPEAT h = h0 TO h3 / x = 0 TO 3 / y = 8, 7.5, 6, 5. + COMPUTE h = x + y. +END REPEAT. + +VECTOR v(6). +COMPUTE #idx = 0. +DO REPEAT i = 1 TO 2. + DO REPEAT j = 3 TO 5. + COMPUTE #x = i + j. + COMPUTE #idx = #idx + 1. + COMPUTE v(#idx) = #x. + END REPEAT. +END REPEAT. + +LIST. +]) +AT_CHECK([pspp -o pspp.csv do-repeat.sps]) +AT_CHECK([cat pspp.csv], [0], [dnl +Table: Data List +a,h0,h1,h2,h3,v1,v2,v3,v4,v5,v6 +0,8.00,8.50,8.00,8.00,4.00,5.00,6.00,5.00,6.00,7.00 +]) +AT_CLEANUP + +dnl This program tests for a bug that crashed PSPP given an empty DO +dnl REPEAT...END REPEAT block. See bug #18407. +AT_SETUP([DO REPEAT -- empty]) +AT_DATA([do-repeat.sps], [dnl +DATA LIST NOTABLE /a 1. +BEGIN DATA. +0 +END DATA. + +DO REPEAT h = a. +END REPEAT. +]) +AT_CHECK([pspp -o pspp.csv do-repeat.sps]) +AT_CHECK([cat pspp.csv], [0], [dnl +]) +AT_CLEANUP