b3cae373b8a5d7eab06e6d84d07a30228016b5ed
[pspp-builds.git] / tests / bugs / crosstabs-crash.sh
1 #!/bin/sh
2
3 # This program tests for a bug which caused CROSSTABS to crash in
4 # integer mode.
5
6 TEMPDIR=/tmp/pspp-tst-$$
7 TESTFILE=$TEMPDIR/`basename $0`.sps
8
9 here=`pwd`;
10
11 # ensure that top_srcdir is absolute
12 cd $top_srcdir; top_srcdir=`pwd`
13
14 STAT_CONFIG_PATH=$top_srcdir/config
15 export STAT_CONFIG_PATH
16
17
18 cleanup()
19 {
20      cd /
21      rm -rf $TEMPDIR
22 }
23
24
25 fail()
26 {
27     echo $activity
28     echo FAILED
29     cleanup;
30     exit 1;
31 }
32
33
34 no_result()
35 {
36     echo $activity
37     echo NO RESULT;
38     cleanup;
39     exit 2;
40 }
41
42 pass()
43 {
44     cleanup;
45     exit 0;
46 }
47
48 mkdir -p $TEMPDIR
49
50 cd $TEMPDIR
51
52 activity="create program"
53 cat > $TESTFILE <<EOF
54 DATA LIST LIST /A * B * X * Y * .
55 BEGIN DATA.
56 2 3 4 5
57 END DATA.
58
59 CROSSTABS VARIABLES X (1,7) Y (1,7) /TABLES X BY Y.
60 EOF
61 if [ $? -ne 0 ] ; then no_result ; fi
62
63 $SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE
64 if [ $? -ne 0 ] ; then no_result ; fi
65
66
67 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
68 diff -b  -w $TEMPDIR/pspp.list - << EOF
69 1.1 DATA LIST.  Reading free-form data from INLINE.
70 +--------+------+
71 |Variable|Format|
72 #========#======#
73 |A       |F8.0  |
74 |B       |F8.0  |
75 |X       |F8.0  |
76 |Y       |F8.0  |
77 +--------+------+
78 2.1 CROSSTABS.  Summary.
79 #===============#=====================================================#
80 #               #                        Cases                        #
81 #               #-----------------+-----------------+-----------------#
82 #               #      Valid      |     Missing     |      Total      #
83 #               #--------+--------+--------+--------+--------+--------#
84 #               #       N| Percent|       N| Percent|       N| Percent#
85 #---------------#--------+--------+--------+--------+--------+--------#
86 #X * Y          #       1|  100.0%|       0|    0.0%|       1|  100.0%#
87 #===============#========#========#========#========#========#========#
88 2.2 CROSSTABS.  X by Y [count].
89 #===============#==============================================================#========#
90 #               #                               Y                              |        #
91 #               #--------+--------+--------+--------+--------+--------+--------+        #
92 #              X#    1.00|    2.00|    3.00|    4.00|    5.00|    6.00|    7.00|  Total #
93 #---------------#--------+--------+--------+--------+--------+--------+--------+--------#
94 #           1.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
95 #           2.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
96 #           3.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
97 #           4.00#      .0|      .0|      .0|      .0|     1.0|      .0|      .0|     1.0#
98 #           5.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
99 #           6.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
100 #           7.00#      .0|      .0|      .0|      .0|      .0|      .0|      .0|      .0#
101 #Total          #     .0%|     .0%|     .0%|     .0%|    1.0%|     .0%|     .0%|    1.0%#
102 #===============#========#========#========#========#========#========#========#========#
103 EOF
104 if [ $? -ne 0 ] ; then fail ; fi
105
106 pass;