Fix bug #15766 (/KEEP subcommand on SAVE doesn't fully support ALL)
[pspp-builds.git] / tests / bugs / keep-all.sh
1 #!/bin/sh
2
3 # This program tests for bug #15766 (/KEEP subcommand on SAVE doesn't
4 # fully support ALL) and underlying problems.
5
6 TEMPDIR=/tmp/pspp-tst-$$
7 TESTFILE=$TEMPDIR/`basename $0`.pspp
8
9 # ensure that top_builddir  are absolute
10 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
11 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
12 top_builddir=`cd $top_builddir; pwd`
13 PSPP=$top_builddir/src/ui/terminal/pspp
14
15 # ensure that top_srcdir is absolute
16 top_srcdir=`cd $top_srcdir; pwd`
17
18 STAT_CONFIG_PATH=$top_srcdir/config
19 export STAT_CONFIG_PATH
20
21
22 cleanup()
23 {
24      cd /
25      rm -rf $TEMPDIR
26 }
27
28
29 fail()
30 {
31     echo $activity
32     echo FAILED
33     cleanup;
34     exit 1;
35 }
36
37
38 no_result()
39 {
40     echo $activity
41     echo NO RESULT;
42     cleanup;
43     exit 2;
44 }
45
46 pass()
47 {
48     cleanup;
49     exit 0;
50 }
51
52 mkdir -p $TEMPDIR
53
54 cd $TEMPDIR
55
56 for mode in COMPRESSED UNCOMPRESSED; do
57     activity="create program ($mode)"
58     cat > $TESTFILE <<EOF
59 DATA LIST LIST NOTABLE 
60         /a b c d e f g h i j k l m n o p q r s t u v w x y z (F2.0).
61 BEGIN DATA.
62 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
63 END DATA.
64 LIST.
65 SAVE OUTFILE='test.sav'/$mode.
66 GET FILE='test.sav'/KEEP=x y z all.
67 LIST.
68 EOF
69     if [ $? -ne 0 ] ; then no_result ; fi
70
71     activity="run PSPP ($mode)"
72     $SUPERVISOR $PSPP -o raw-ascii $TESTFILE
73     if [ $? -ne 0 ] ; then no_result ; fi
74
75
76     activity="compare output ($mode)"
77     perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
78     diff -u -b  -w $TEMPDIR/pspp.list - << EOF
79  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
80 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
81  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
82  x  y  z  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w
83 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
84 24 25 26  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
85 EOF
86     if [ $? -ne 0 ] ; then fail ; fi
87 done
88
89 pass;