Rewrite PSPP output engine.
[pspp-builds.git] / tests / command / file-label.sh
index 931d0c11af14420816fc21c183868760300717a9..4dc929eaa39833a23d1ee8158c5dcd914f9d2a98 100755 (executable)
@@ -1,19 +1,32 @@
 #!/bin/sh
 
-# This program tests the FILE LABEL and  DOCUMENT commands
+# This program tests the FILE LABEL and  DOCUMENT, and ADD DOCUMENT commands
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
-here=`pwd`;
+# 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
 
 # ensure that top_srcdir is absolute
-cd $top_srcdir; top_srcdir=`pwd`
+top_srcdir=`cd $top_srcdir; pwd`
 
-export STAT_CONFIG_PATH=$top_srcdir/config
+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
 }
 
@@ -46,11 +59,10 @@ mkdir -p $TEMPDIR
 cd $TEMPDIR
 
 activity="create program"
-cat > $TEMPDIR/file-lab.stat << EOF
-
+cat > $TESTFILE << EOF
 
 /* Set up a dummy active file in memory.
-data list /x 1 y 2.
+data list /X 1 Y 2.
 begin data.
 16
 27
@@ -66,18 +78,21 @@ add value labels x 1 'first label mark two'.
 /* Add a file label and a few documents.
 file label This is a test file label.
 document First line of a document
-This is the second very long line of a document in an attempt to overflow the input buffer with a really long line
-Note that the last line should end with a period: .
+Second line of a document
+The last line should end with a period: .
+
 
 /* Display the documents.
 display documents.
-display file label.    /* undocumented feature of PSPP
+display file label.
+
+ADD DOCUMENT 'Line one' 'Line two'.
 
 /* Save the active file then get it and display the documents again.
-save 'foo.save'.
-get 'foo.save'.
+save /OUTFILE='foo.save'.
+get /FILE='foo.save'.
 display documents.
-display file label.    /* undocumented feature of PSPP
+display file label.
 
 /* There is an interesting interaction that occurs if the 'execute'
 /* command below.  What happens is that an error message is output
@@ -93,10 +108,10 @@ document There should be another document now.
 display documents.
 
 /* Save and get.
-save 'foo.save'.
-get 'foo.save'.
+save /OUTFILE='foo.save'.
+get /FILE='foo.save'.
 display documents.
-display file label.    /* undocumented feature of PSPP
+display file label.
 
 /* Done.
 
@@ -104,60 +119,98 @@ EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii $TEMPDIR/file-lab.stat
+$SUPERVISOR $PSPP --testing-mode $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 # We need to filter out the dates/times
 activity="date filter"
-grep -v 'Document entered' $TEMPDIR/pspp.list > $TEMPDIR/pspp.filtered
+sed 's/(Entered [^)]*)/(Entered <date>)/' $TEMPDIR/pspp.csv > $TEMPDIR/pspp.filtered
 if [ $? -ne 0 ] ; then no_result ; fi
 
 
 activity="compare results"
-diff -b -B $TEMPDIR/pspp.filtered - <<EOF
-1.1 DATA LIST.  Reading 1 record from the command file.
-+--------+------+-------+------+
-|Variable|Record|Columns|Format|
-#========#======#=======#======#
-|X       |     1|  1-  1|F1.0  |
-|Y       |     1|  2-  2|F1.0  |
-+--------+------+-------+------+
+diff -c $TEMPDIR/pspp.filtered - <<EOF
+Table: Reading 1 record from INLINE.
+Variable,Record,Columns,Format
+X,1,1-  1,F1.0
+Y,1,2-  2,F1.0
 
 Documents in the active file:
 
-   First line of a document
-   This is the second very long line of a document in an attempt to overflow the
-   Note that the last line should end with a period: .
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
 
 File label:
+
 This is a test file label
 
 Documents in the active file:
 
-   First line of a document
-   This is the second very long line of a document in an attempt to overflow the
-   Note that the last line should end with a period: .
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+Line one
+
+Line two
+
+(Entered <date>)
 
 File label:
+
 This is a test file label
 
 Documents in the active file:
 
-   First line of a document
-   This is the second very long line of a document in an attempt to overflow the
-   Note that the last line should end with a period: .
-   There should be another document now.
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+Line one
+
+Line two
+
+(Entered <date>)
+
+document There should be another document now.
+
+(Entered <date>)
 
 Documents in the active file:
 
-   First line of a document
-   This is the second very long line of a document in an attempt to overflow the
-   Note that the last line should end with a period: .
-   There should be another document now.
+document First line of a document
+
+Second line of a document
+
+The last line should end with a period: .
+
+(Entered <date>)
+
+Line one
+
+Line two
+
+(Entered <date>)
+
+document There should be another document now.
+
+(Entered <date>)
 
 File label:
+
 This is a test file label
 EOF
 if [ $? -ne 0 ] ; then fail ; fi