Allow output files to overwrite input files (bug #21280). Thanks to
[pspp-builds.git] / tests / command / sysfiles.sh
1 #!/bin/sh
2
3 # This program tests that system files can be read and written 
4 # including the long variable names.
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 / variable001 * variable002 * variable003 * variable004 * .
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 LIST.
76
77 EOF
78 if [ $? -ne 0 ] ; then no_result ; fi
79
80
81 activity="run program"
82 $SUPERVISOR $PSPP --testing-mode $TESTFILE
83 if [ $? -ne 0 ] ; then no_result ; fi
84
85 activity="compare output"
86 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
87 diff -b  -w $TEMPDIR/pspp.list - << EOF
88 variable001 variable002 variable003 variable004
89 ----------- ----------- ----------- -----------
90        1.00        1.00        1.00        2.00  
91        1.00        1.00        2.00       30.00 
92        1.00        2.00        1.00        8.00 
93        1.00        2.00        2.00       20.00 
94        2.00        1.00        1.00        2.00 
95        2.00        1.00        2.00       22.00 
96        2.00        2.00        1.00        1.00 
97        2.00        2.00        2.00        3.00 
98 EOF
99 if [ $? -ne 0 ] ; then fail ; fi
100
101 pass;