cmd: Fix a FOR parsing bug when multiple spaces follow an IN.
[wine] / programs / cmd / tests / test_builtins.cmd.exp
1
2 @pwd@>echo Tests for cmd's builtin commands@space@
3 Tests for cmd's builtin commands
4
5 @pwd@>echo ------------ Testing 'echo' [ON] --------------@space@
6 ------------ Testing 'echo' [ON] --------------
7
8 @pwd@>echo word@space@
9 word
10
11 @pwd@>echo 'singlequotedword'@space@
12 'singlequotedword'
13
14 @pwd@>echo "doublequotedword"@space@
15 "doublequotedword"
16 at-echoed-word
17
18 @pwd@>echo "/?"@space@
19 "/?"
20
21 @pwd@>echo.
22
23
24 @pwd@>echo .@space@
25 .
26
27 @pwd@>echo.word
28 word
29
30 @pwd@>echo .word@space@
31 .word
32
33 @pwd@>echo:
34
35
36 @pwd@>echo :@space@
37 :
38
39 @pwd@>echo:word
40 word
41
42 @pwd@>echo :word@space@
43 :word
44
45 @pwd@>echo word@space@@space@
46 word@space@
47
48 @pwd@>echo word@space@@space@@space@
49 word@space@@space@
50 ------------ Testing 'echo' [OFF] --------------
51 word
52 'singlequotedword'
53 "doublequotedword"
54 at-echoed-word
55 "/?"
56
57 .
58 word
59 .word
60
61 :
62 word
63 :word
64 word@space@
65 word@space@@space@
66 ------------ Testing redirection operators --------------
67 ...stdout redirection
68 foo
69 foo@space@
70 @todo_wine@foo1
71 @todo_wine@foo11
72 @todo_wine@foo12
73 ...stdout appending
74 foo
75 foo@space@
76 foob@space@
77 foob@space@
78 fooc@space@
79 foob@space@
80 fooc@space@
81 @todo_wine@food1
82 @todo_wine@foob@space@
83 @todo_wine@fooc@space@
84 @todo_wine@food1
85 @todo_wine@food2
86 @todo_wine@food21
87 @todo_wine@------------ Testing ^ escape character --------------
88 @todo_wine@hello, world
89 @todo_wine@hello, world
90 @todo_wine@hell^o, world
91 @todo_wine@hell^o, world
92 baz
93 @todo_wine@baz
94 @todo_wine@foo | echo bar
95 @todo_wine@foo & echo bar
96 @todo_wine@bak &
97 @todo_wine@baz@space@
98 @todo_wine@0@or_broken@1
99 @todo_wine@foo > foo
100 @todo_wine@<
101 @todo_wine@ffoof
102 @todo_wine@FOO=bar | baz
103 @todo_wine@0
104 @todo_wine@FOO=bar ^| baz
105 @todo_wine@bar | baz
106 @todo_wine@0
107 ------------ Testing 'set' --------------
108 1
109 @todo_wine@0
110 FOOBAR not defined
111 @todo_wine@  baz
112 FOOBAR =  baz
113 @todo_wine@0
114 @todo_wine@  baz2
115 @todo_wine@0
116  bar
117 @todo_wine@FOOBAR= bar
118 @todo_wine@FOOBAR =  baz2
119 FOOBAR =  baz2
120 FOOBAR not defined
121 1
122 bar
123 foobar
124 FOO not defined
125 BAZ=bazbaz
126 bazbaz
127 set "FOO=bar" should not include the quotes in the variable value
128 bar
129 ------------ Testing variable expansion --------------
130 ~dp0 should be directory containing batch file
131 @pwd@\
132 @pwd@\
133 CD value @pwd@@or_broken@CD value@space@
134 %
135 P
136 P
137 S
138 P
139 PS
140 ERRORLEVEL
141 0
142 00
143 0ERRORLEVEL
144 0
145 0%
146 P0
147 0S
148 P0S
149 ------------ Testing variable delayed expansion --------------
150 ...default mode (load-time expansion)
151 foo
152 !FOO!
153 foo
154 foo
155 ...runtime (delayed) expansion mode
156 foo
157 @todo_wine@foo@or_broken@!FOO!
158 foo
159 @todo_wine@bar@or_broken@foo
160 0
161 0@or_broken@1
162 foo
163 !FOO!
164 ...using /V cmd flag
165 foo
166 @todo_wine@foo@or_broken@!FOO!
167 foo
168 !FOO!
169 ------------ Testing conditional execution --------------
170 @todo_wine@...unconditional &
171 foo1
172 bar2@space@
173 foo2
174 @todo_wine@foobar deleted
175 @todo_wine@...on success conditional &&
176 @todo_wine@foo3 not created
177 bar4@space@
178 foo4
179 @todo_wine@...on failure conditional ||
180 @todo_wine@foo5
181 @todo_wine@foo6@space@
182 ------------ Testing type ------------
183
184 @pwd@>type foobaz@space@
185 bar
186
187 @pwd@>echo ***@space@
188 ***
189 bar
190 ***
191 ------------ Testing NUL ------------
192 bar
193 bar
194 bar
195 NUL
196 @todo_wine@foo created
197 ------------ Testing if/else --------------
198 if/else should work with blocks
199 if seems to work
200 else seems to work
201 @todo_wine@if seems not to detect /c as parameter
202 Testing case sensitivity with and without /i option
203 if seems to default to case sensitivity
204 if /i seems to work
205 if /I seems to work
206 -----------Testing for -----------
207 ...plain FOR
208 A
209 B
210 C
211 %I
212 %I
213 %I
214 %j
215 %j
216 %j
217 A
218 B
219 C
220 1
221 4
222 1
223 A
224 B
225 C
226 X
227 ...imbricated FORs
228 @todo_wine@X Y
229 @todo_wine@X Y
230 @todo_wine@A C
231 @todo_wine@A D
232 @todo_wine@B C
233 @todo_wine@B D
234 @todo_wine@A C
235 @todo_wine@A D
236 @todo_wine@B C
237 @todo_wine@B D
238 ...basic wildcards
239 bazbaz
240 ...for /d
241 baz
242 foo
243 bar
244 ...for /L
245 1
246 3
247 5
248 1
249 3
250 5
251 0
252 2
253 1
254 -1
255 @todo_wine@ErrorLevel 0
256 @todo_wine@ErrorLevel 0
257 ...for /a
258 ......individual operations
259 0
260 @todo_wine@3
261 @todo_wine@-1
262 @todo_wine@3
263 @todo_wine@6
264 @todo_wine@10
265 @todo_wine@4
266 @todo_wine@4
267 @todo_wine@-4
268 0
269 @todo_wine@2
270 @todo_wine@2
271 @todo_wine@-2
272 @todo_wine@1
273 @todo_wine@4
274 0@or_broken@1073741824
275 0@or_broken@-1073741824
276 @todo_wine@-4
277 @todo_wine@9
278 @todo_wine@2
279 0
280 @todo_wine@-1
281 @todo_wine@-3
282 0
283 @todo_wine@1
284 @todo_wine@1
285 @todo_wine@4
286 @todo_wine@1
287 @todo_wine@5
288 @todo_wine@5
289 @todo_wine@7
290 @todo_wine@5
291 @todo_wine@5
292 @todo_wine@5
293 @todo_wine@4
294 @todo_wine@6
295 @todo_wine@1
296 ......precedence and grouping
297 @todo_wine@4
298 @todo_wine@10
299 @todo_wine@18@or_broken@10
300 @todo_wine@2@or_broken@0
301 @todo_wine@2@or_broken@0
302 0@or_broken@4
303 @todo_wine@4
304 @todo_wine@3@or_broken@4
305 ......octal and hexadecimal
306 @todo_wine@3@or_broken@4
307 @todo_wine@18
308 @todo_wine@18
309 @todo_wine@15
310 ......variables
311 @todo_wine@3
312 @todo_wine@3@or_broken@foo not defined
313 @todo_wine@3@or_broken@0
314 @todo_wine@3@or_broken@0
315 @todo_wine@3@or_broken@0
316 @todo_wine@9@or_broken@0
317 0
318 @todo_wine@4@or_broken@0
319 @todo_wine@-7@or_broken@0
320 @todo_wine@-1@or_broken@0
321 @todo_wine@5@or_broken@0
322 @todo_wine@4@or_broken@0
323 @todo_wine@1@or_broken@0
324 0
325 @todo_wine@5@or_broken@0
326
327 -----------Testing del /a-----------
328 not-r.test not found after delete, good
329 r.test found before delete, good
330 r.test not found after delete, good
331 ------------ Testing del /q --------------
332 del /q * succeeded on file1
333 del /q * succeeded on file2.dat
334 ------------ Testing del /s --------------
335 ----------- Testing mkdir -----------
336 0
337 0
338 1
339 1
340 0
341 0
342 0
343 0
344 0
345 1
346 0
347 0
348 0
349 dir created
350 0
351 mkdir ? gives errorlevel 1
352 mkdir ?\foo gives errorlevel 1
353 mkdir foo\? gives errorlevel 1
354 ok, foo created
355 mkdir foo\bar\? gives errorlevel 1
356 ok, foo\bar created
357 foo created
358 bar created
359 foobar created
360 bar\baz created
361 mkdir foo\* errorlevel 1
362 ok, foo created
363 ----------- Testing rmdir -----------
364 0
365 dir removed
366 0
367 dir removed
368 0
369 0
370 file not removed
371 0
372 non-empty dir not removed
373 0
374 non-empty dir not removed
375 recursive rmdir succeeded
376 recursive rmdir succeeded
377 foo removed
378 bar removed
379 foobar removed
380 bar\baz removed
381 ------------ Testing CALL --------------
382 foo@space@
383 @todo_wine@foo 8
384 foo@space@@space@
385 foo bar@space@
386 @todo_wine@foo ""@space@
387 @todo_wine@"" bar@space@
388 foo ''@space@
389 '' bar@space@
390 bar :testRoutine
391 foo@space@
392 foo bar
393 @todo_wine@foo ""
394 @todo_wine@"" bar
395 foo ''
396 '' bar
397 @todo_wine@0
398 @todo_wine@foo created
399 @todo_wine@Should expand foobaz
400 @todo_wine@batfile
401 @todo_wine@robinfile
402 @todo_wine@1
403 @todo_wine@1
404 non-builtin dir
405 ------------ Testing setlocal/endlocal ------------
406 ...enable/disable extensions
407 @todo_wine@ErrLev:@space@
408 ErrLev: 0
409 ErrLev: 0
410 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
411 ErrLev: 0
412 ...setlocal with corresponding endlocal
413 globalval
414 localval
415 globalval
416 globalval
417 ...setlocal with no corresponding endlocal
418 globalval
419 localval
420 @todo_wine@globalval
421 -----------Testing Errorlevel-----------
422 9009
423 1
424 errorlevel just right, good
425 abc0def@or_broken@abc1def
426 errorlevel zero, good@or_broken@errorlevel nonzero, bad
427 7 should be 7
428 7 should still be 7
429 -----------Testing GOTO-----------
430 goto with no leading space worked
431 goto with a leading space worked
432 goto with a leading tab worked
433 goto with a following space worked
434 -----------Done, jumping to EOF-----------