Fix bug #18739.
[pspp] / tests / bugs / get.sh
1 #!/bin/sh
2
3 # This program tests for a bug which caused
4 # the second procedure after GET FILE to corrupt its output
5
6
7 TEMPDIR=/tmp/pspp-tst-$$
8 TESTFILE=$TEMPDIR/`basename $0`.sps
9
10 # ensure that top_builddir  are absolute
11 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
12 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
13 top_builddir=`cd $top_builddir; pwd`
14 PSPP=$top_builddir/src/ui/terminal/pspp
15
16 # ensure that top_srcdir is absolute
17 top_srcdir=`cd $top_srcdir; pwd`
18
19 STAT_CONFIG_PATH=$top_srcdir/config
20 export STAT_CONFIG_PATH
21
22
23 cleanup()
24 {
25      cd /
26      rm -rf $TEMPDIR
27 }
28
29
30 fail()
31 {
32     echo $activity
33     echo FAILED
34     cleanup;
35     exit 1;
36 }
37
38
39 no_result()
40 {
41     echo $activity
42     echo NO RESULT;
43     cleanup;
44     exit 2;
45 }
46
47 pass()
48 {
49     cleanup;
50     exit 0;
51 }
52
53 mkdir -p $TEMPDIR
54
55 cd $TEMPDIR
56
57 activity="create program"
58 cat > $TESTFILE <<EOF
59 DATA LIST LIST NOTABLE /LOCATION * EDITOR * SHELL * FREQ * .
60 BEGIN DATA.
61     1.00     1.00    1.0     2.00
62     1.00     1.00    2.0    30.00
63     1.00     2.00    1.0     8.00
64     1.00     2.00    2.0    20.00
65     2.00     1.00    1.0     2.00
66     2.00     1.00    2.0    22.00
67     2.00     2.00    1.0     1.00
68     2.00     2.00    2.0     3.00
69 END DATA.
70
71 SAVE /OUTFILE='$TEMPDIR/foo.sav'.
72
73 GET /FILE='$TEMPDIR/foo.sav'.
74
75 * This one's ok
76 LIST.
77
78 * But this one get rubbish
79 LIST.
80
81 EOF
82 if [ $? -ne 0 ] ; then no_result ; fi
83
84
85 activity="run program"
86 $SUPERVISOR $PSPP -o raw-ascii $TESTFILE
87 if [ $? -ne 0 ] ; then no_result ; fi
88
89
90
91
92 activity="compare output"
93 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
94 diff -b  -w $TEMPDIR/pspp.list - << EOF
95 LOCATION   EDITOR    SHELL     FREQ
96  -------- -------- -------- --------
97      1.00     1.00     1.00     2.00 
98      1.00     1.00     2.00    30.00 
99      1.00     2.00     1.00     8.00 
100      1.00     2.00     2.00    20.00 
101      2.00     1.00     1.00     2.00 
102      2.00     1.00     2.00    22.00 
103      2.00     2.00     1.00     1.00 
104      2.00     2.00     2.00     3.00 
105 LOCATION   EDITOR    SHELL     FREQ
106  -------- -------- -------- --------
107      1.00     1.00     1.00     2.00 
108      1.00     1.00     2.00    30.00 
109      1.00     2.00     1.00     8.00 
110      1.00     2.00     2.00    20.00 
111      2.00     1.00     1.00     2.00 
112      2.00     1.00     2.00    22.00 
113      2.00     2.00     1.00     1.00 
114      2.00     2.00     2.00     3.00 
115 EOF
116 if [ $? -ne 0 ] ; then fail ; fi
117
118 pass;