FILE HANDLE: Improve error messages and coding style.
[pspp] / tests / language / data-io / file-handle.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
3 dnl
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.
8 dnl
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.
13 dnl
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
17 AT_BANNER([FILE HANDLE])
18
19 AT_SETUP([FILE HANDLE])
20 AT_DATA([wiggle.txt], [dnl
21 1
22 2
23 5
24 109
25 ])
26 AT_DATA([file-handle.sps], [dnl
27 FILE HANDLE myhandle /NAME='wiggle.txt'.
28 DATA LIST LIST FILE=myhandle /x *.
29 LIST.
30 ])
31 AT_CHECK([pspp -O format=csv file-handle.sps], [0], [dnl
32 Table: Reading free-form data from myhandle.
33 Variable,Format
34 x,F8.0
35
36 Table: Data List
37 x
38 1.00
39 2.00
40 5.00
41 109.00
42 ])
43 AT_CLEANUP
44
45 AT_SETUP([FILE HANDLE syntax errors])
46 AT_DATA([file-handle.sps], [dnl
47 FILE HANDLE **.
48 FILE HANDLE x/NAME='x.txt'.
49 FILE HANDLE x/NAME='x.txt'.
50 FILE HANDLE y **.
51 FILE HANDLE y/NAME=**.
52 FILE HANDLE y/LRECL=8/LRECL=8.
53 FILE HANDLE y/LRECL=**.
54 FILE HANDLE y/TABWIDTH=8/TABWIDTH=8.
55 FILE HANDLE y/TABWIDTH=**.
56 FILE HANDLE y/MODE=CHARACTER/MODE=CHARACTER.
57 FILE HANDLE y/MODE=**.
58 FILE HANDLE y/ENDS=LF/ENDS=LF.
59 FILE HANDLE y/ENDS=**.
60 FILE HANDLE y/RECFORM=FIXED/RECFORM=FIXED.
61 FILE HANDLE y/RECFORM=**.
62 FILE HANDLE y/ENCODING='UTF-8'/ENCODING='UTF-8'.
63 FILE HANDLE y/ENCODING=**.
64 FILE HANDLE y/TABWIDTH=8.
65 FILE HANDLE y/NAME='x.txt'/MODE=360.
66 FILE HANDLE y/NAME='x.txt'/MODE=FIXED.
67 ])
68 AT_DATA([insert.sps], [dnl
69 INSERT FILE='file-handle.sps' ERROR=IGNORE.
70 ])
71 AT_CHECK([pspp --testing-mode -O format=csv insert.sps], [1], [dnl
72 "file-handle.sps:1.13-1.14: error: FILE HANDLE: Syntax error expecting identifier.
73     1 | FILE HANDLE **.
74       |             ^~"
75
76 "file-handle.sps:3.13: error: FILE HANDLE: File handle x is already defined.  Use CLOSE FILE HANDLE before redefining a file handle.
77     3 | FILE HANDLE x/NAME='x.txt'.
78       |             ^"
79
80 "file-handle.sps:4.15-4.16: error: FILE HANDLE: Syntax error expecting `/'.
81     4 | FILE HANDLE y **.
82       |               ^~"
83
84 "file-handle.sps:5.20-5.21: error: FILE HANDLE: Syntax error expecting string.
85     5 | FILE HANDLE y/NAME=**.
86       |                    ^~"
87
88 "file-handle.sps:6.23-6.27: error: FILE HANDLE: Subcommand LRECL may only be specified once.
89     6 | FILE HANDLE y/LRECL=8/LRECL=8.
90       |                       ^~~~~"
91
92 "file-handle.sps:7.21-7.22: error: FILE HANDLE: Syntax error expecting positive integer for LRECL.
93     7 | FILE HANDLE y/LRECL=**.
94       |                     ^~"
95
96 "file-handle.sps:8.26-8.33: error: FILE HANDLE: Subcommand TABWIDTH may only be specified once.
97     8 | FILE HANDLE y/TABWIDTH=8/TABWIDTH=8.
98       |                          ^~~~~~~~"
99
100 "file-handle.sps:9.24-9.25: error: FILE HANDLE: Syntax error expecting positive integer for TABWIDTH.
101     9 | FILE HANDLE y/TABWIDTH=**.
102       |                        ^~"
103
104 "file-handle.sps:10.30-10.33: error: FILE HANDLE: Subcommand MODE may only be specified once.
105    10 | FILE HANDLE y/MODE=CHARACTER/MODE=CHARACTER.
106       |                              ^~~~"
107
108 "file-handle.sps:11.20-11.21: error: FILE HANDLE: Syntax error expecting CHARACTER, BINARY, IMAGE, or 360.
109    11 | FILE HANDLE y/MODE=**.
110       |                    ^~"
111
112 "file-handle.sps:12.23-12.26: error: FILE HANDLE: Subcommand ENDS may only be specified once.
113    12 | FILE HANDLE y/ENDS=LF/ENDS=LF.
114       |                       ^~~~"
115
116 "file-handle.sps:13.20-13.21: error: FILE HANDLE: Syntax error expecting LF or CRLF.
117    13 | FILE HANDLE y/ENDS=**.
118       |                    ^~"
119
120 "file-handle.sps:14.29-14.35: error: FILE HANDLE: Subcommand RECFORM may only be specified once.
121    14 | FILE HANDLE y/RECFORM=FIXED/RECFORM=FIXED.
122       |                             ^~~~~~~"
123
124 "file-handle.sps:15.23-15.24: error: FILE HANDLE: Syntax error expecting FIXED, VARIABLE, or SPANNED.
125    15 | FILE HANDLE y/RECFORM=**.
126       |                       ^~"
127
128 "file-handle.sps:16.32-16.39: error: FILE HANDLE: Subcommand ENCODING may only be specified once.
129    16 | FILE HANDLE y/ENCODING='UTF-8'/ENCODING='UTF-8'.
130       |                                ^~~~~~~~"
131
132 "file-handle.sps:17.24-17.25: error: FILE HANDLE: Syntax error expecting string.
133    17 | FILE HANDLE y/ENCODING=**.
134       |                        ^~"
135
136 "file-handle.sps:18.1-18.25: error: FILE HANDLE: Required subcommand NAME was not specified.
137    18 | FILE HANDLE y/TABWIDTH=8.
138       | ^~~~~~~~~~~~~~~~~~~~~~~~~"
139
140 "file-handle.sps:19.28-19.35: error: FILE HANDLE: RECFORM must be specified with MODE=360.
141    19 | FILE HANDLE y/NAME='x.txt'/MODE=360.
142       |                            ^~~~~~~~"
143
144 "file-handle.sps:20.33-20.37: error: FILE HANDLE: Syntax error expecting CHARACTER, BINARY, IMAGE, or 360.
145    20 | FILE HANDLE y/NAME='x.txt'/MODE=FIXED.
146       |                                 ^~~~~"
147 ])
148 AT_CLEANUP