1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
16 dnl AT_BANNER([PRINT and WRITE])
18 dnl These tests check unusual aspects of the PRINT and WRITE
21 dnl - PRINT puts spaces between variables, unless a format
22 dnl is specified explicitly.
24 dnl - WRITE doesn't put space between variables.
26 dnl - PRINT to an external file prefixes each line with a space.
28 dnl - PRINT EJECT to an external file indicates a formfeed by a "1"
29 dnl in the first column.
31 dnl - WRITE writes out spaces for system-missing values, not a period.
33 dnl - When no output is specified, an empty record is output.
35 AT_SETUP([PRINT numeric variables])
36 AT_DATA([print.sps], [dnl
37 data list notable /x y 1-2.
53 AT_CHECK([pspp -O format=csv print.sps], [0], [dnl
106 AT_SETUP([PRINT string variables])
107 AT_DATA([print.sps], [dnl
108 DATA LIST FREE /s8 (a8) s10 (a10) vl255 (a255) vl258 (a258).
112 AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ
113 AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ
116 AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ
117 AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ
122 /s10 * vl255 * vl258 *.
126 AT_CHECK([pspp -O format=csv print.sps])
127 AT_CHECK([cat print.txt], [0], [dnl
128 AaaaaaaaaZ AbbbbMaryHadALittleLambbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ AccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ @&t@
129 AnnnnnnnnZ AmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmZ AoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooWhyIsItSoZ @&t@
133 AT_SETUP([PRINT to file])
134 AT_DATA([print.sps], [dnl
135 data list notable /x y 1-2.
144 print outfile='print.out' /x y.
145 print eject outfile='print.out' /x y (f1,f1).
146 print outfile='print.out' /x '-' y.
147 print outfile='print.out'.
151 AT_CHECK([pspp -O format=csv print.sps])
152 AT_CHECK([cat print.out], [0], [dnl
176 dnl Tests for a bug which crashed when deallocating after a bad PRINT
178 AT_SETUP([PRINT crash bug])
179 AT_DATA([print.sps], [dnl
180 DATA LIST LIST NOTABLE /a * b *.
189 AT_CHECK([pspp -O format=csv print.sps], [1], [dnl
190 print.sps:7.7-7.10: error: PRINT: Syntax error at `F8.2': expecting a valid subcommand.
199 AT_SETUP([WRITE to file])
200 AT_DATA([write.sps], [dnl
201 data list notable /x y 1-2.
210 write outfile='write.out' /x y.
211 write outfile='write.out' /x y (2(f1)).
212 write outfile='write.out' /x '-' y.
213 write outfile='write.out'.
217 AT_CHECK([pspp -O format=csv write.sps])
218 AT_CHECK([cat write.out], [0], [dnl
242 AT_SETUP([PRINT overwrites file])
243 AT_DATA([output.txt], [abcdef
245 AT_DATA([print.sps], [dnl
246 DATA LIST NOTABLE/x 1.
250 PRINT OUTFILE='output.txt'/x.
253 AT_CHECK([pspp -O format=csv print.sps])
254 AT_CHECK([cat output.txt], [0], [ 5 @&t@
258 AT_SETUP([PRINT overwrites file atomically])
259 AT_DATA([output.txt], [abcdef
262 [[DATA LIST NOTABLE/x 1.
266 PRINT OUTFILE='output.txt'/x.
267 HOST COMMAND=['kill -TERM $PPID'].
269 AT_CHECK([pspp -O format=csv print.sps], [143], [], [ignore])
270 AT_CHECK([cat output.txt], [0], [abcdef
273 [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
276 AT_SETUP([PRINT to same file being read])
277 AT_DATA([data.txt], [5
279 AT_DATA([print.sps], [dnl
280 DATA LIST FILE='data.txt' NOTABLE/x 1.
282 PRINT OUTFILE='data.txt'/y.
285 AT_CHECK([pspp -O format=csv print.sps])
286 AT_CHECK([cat data.txt], [0], [ 6.00 @&t@
289 [for file in *.tmp*; do if test -e $file; then echo $file; exit 1; fi; done])
292 AT_SETUP([PRINT to special file])
293 AT_SKIP_IF([test ! -c /dev/null])
294 AT_CHECK([ln -s /dev/null foo.out || exit 77])
295 AT_SKIP_IF([test ! -c foo.out])
296 AT_DATA([print.sps], [dnl
297 DATA LIST NOTABLE /x 1.
305 PRINT OUTFILE='foo.out'/x.
306 PRINT OUTFILE='foo2.out'/x.
309 AT_CHECK([pspp -O format=csv print.sps])
310 AT_CHECK([cat foo2.out], [0], [dnl
317 ls -l foo.out foo2.out
318 AT_CHECK([test -c foo.out])
321 AT_SETUP([PRINT with special line ends])
322 AT_DATA([print.sps], [dnl
323 FILE HANDLE lf /NAME='lf.txt' /ENDS=LF.
324 FILE HANDLE crlf /NAME='crlf.txt' /ENDS=CRLF.
325 DATA LIST NOTABLE /x 1.
334 PRINT OUTFILE=crlf/x.
337 AT_CHECK([pspp -O format=csv print.sps])
338 AT_CHECK([cat lf.txt], [0], [dnl
345 AT_CHECK([tr '\r' R < crlf.txt], [0], [dnl