cmd/tests: Add tests for FOR /F 'skip' option.
[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 off now@space@
46 off now
47
48 @pwd@>echo word@space@@space@
49 word@space@
50
51 @pwd@>echo word@space@@space@@space@
52 word@space@@space@
53
54 @todo_wine@@pwd@>echo word@space@
55 word
56
57 @pwd@>echo@tab@word@space@
58 word
59
60 @pwd@>echo@tab@word@space@@tab@@space@
61 word@space@@tab@
62
63 @pwd@>echo@tab@word@tab@@space@@space@
64 word@tab@@space@
65
66 @todo_wine@@pwd@>echo word@space@
67 word
68
69 @pwd@>echo@space@@tab@word@space@
70 @tab@word
71
72 @pwd@>echo@space@@space@@tab@word@space@
73 @space@@tab@word
74
75 @pwd@>echo@tab@@tab@word@space@
76 @tab@word
77 ------------ Testing 'echo' [OFF] --------------
78 word
79 'singlequotedword'
80 "doublequotedword"
81 at-echoed-word
82 "/?"
83
84 .
85 word
86 .word
87
88 :
89 word
90 :word
91 on again
92 word@space@
93 word@space@@space@
94 word
95 word
96 word@space@@tab@
97 word@tab@@space@
98 word
99 @tab@word
100 @space@@tab@word
101 @tab@word
102 ------------ Testing rem --------------
103
104 @pwd@>rem Hello@space@
105
106 @pwd@>rem  Hello@space@
107
108 @pwd@>rem   Hello || foo@space@
109
110 @pwd@>rem echo lol@space@
111
112 @pwd@>rem echo foo & echo bar@space@
113
114 @pwd@>rem @tab@  Hello@space@
115
116 @pwd@>rem@tab@  Hello@space@
117
118 @pwd@>rem@tab@echo foo & echo bar@space@
119 ------------ Testing redirection operators --------------
120 ...stdout redirection
121 foo
122 foo@space@
123 @todo_wine@foo1
124 @todo_wine@foo11
125 @todo_wine@foo12
126 ...stdout appending
127 foo
128 foo@space@
129 foob@space@
130 foob@space@
131 fooc@space@
132 foob@space@
133 fooc@space@
134 @todo_wine@food1
135 @todo_wine@foob@space@
136 @todo_wine@fooc@space@
137 @todo_wine@food1
138 @todo_wine@food2
139 @todo_wine@food21
140 @todo_wine@------------ Testing ^ escape character --------------
141 @todo_wine@hello, world
142 @todo_wine@hello, world
143 @todo_wine@hell^o, world
144 @todo_wine@hell^o, world
145 baz
146 @todo_wine@baz
147 @todo_wine@foo | echo bar
148 @todo_wine@foo & echo bar
149 @todo_wine@bak &
150 @todo_wine@baz@space@
151 @todo_wine@0@or_broken@1
152 @todo_wine@foo > foo
153 @todo_wine@<
154 @todo_wine@ffoof
155 @todo_wine@FOO=bar | baz
156 @todo_wine@0
157 @todo_wine@FOO=bar ^| baz
158 @todo_wine@bar | baz
159 @todo_wine@0
160 ------------ Testing 'set' --------------
161 1
162 @todo_wine@0
163 FOOBAR not defined
164 @todo_wine@  baz
165 FOOBAR =  baz
166 @todo_wine@0
167 @todo_wine@  baz2
168 @todo_wine@0
169  bar
170 @todo_wine@FOOBAR= bar
171 @todo_wine@FOOBAR =  baz2
172 FOOBAR =  baz2
173 FOOBAR not defined
174 1
175 bar
176 foobar
177 FOO not defined
178 BAZ=bazbaz
179 bazbaz
180 set "FOO=bar" should not include the quotes in the variable value
181 bar
182 foo
183 ''
184 'foo@space@'
185 'foo@tab@'
186 ------------ Testing variable expansion --------------
187 ~dp0 should be directory containing batch file
188 @pwd@\
189 @pwd@\
190 CD value @pwd@@or_broken@CD value@space@
191 %
192 P
193 P
194 S
195 P
196 PS
197 ERRORLEVEL
198 0
199 00
200 0ERRORLEVEL
201 0
202 0%
203 P0
204 0S
205 P0S
206 ------------ Testing variable substrings --------------
207 q
208 qwe
209 er
210 @todo_wine@'ty'@or_broken@''
211 't'@or_broken@''
212 ert@or_broken@qwerty
213 e@or_broken@qwerty
214 ''@or_broken@'qwerty'
215 r@or_broken@qwerty
216 ------------ Testing variable delayed expansion --------------
217 ...default mode (load-time expansion)
218 foo
219 !FOO!
220 foo
221 foo
222 ...runtime (delayed) expansion mode
223 foo
224 @todo_wine@foo@or_broken@!FOO!
225 foo
226 @todo_wine@bar@or_broken@foo
227 0
228 0@or_broken@1
229 foo
230 !FOO!
231 ...using /V cmd flag
232 foo
233 @todo_wine@foo@or_broken@!FOO!
234 foo
235 !FOO!
236 ------------ Testing conditional execution --------------
237 @todo_wine@...unconditional &
238 foo1
239 bar2@space@
240 foo2
241 @todo_wine@foobar deleted
242 @todo_wine@...on success conditional &&
243 @todo_wine@foo3 not created
244 bar4@space@
245 foo4
246 @todo_wine@...on failure conditional ||
247 @todo_wine@foo5
248 @todo_wine@foo6@space@
249 ------------ Testing cd ------------
250 singleFile
251 Current dir: @pwd@\foobar@or_broken@Current dir:@space@
252 @pwd@\foobar
253 @pwd@
254 @pwd@\foobar
255 @pwd@
256 @pwd@\foobar
257 @pwd@
258 @todo_wine@@pwd@
259 @todo_wine@@pwd@
260 @pwd@\foobar\bar bak
261 @pwd@\foobar\bar bak
262 @pwd@\foobar\bar bak
263 @pwd@
264 @pwd@\foobar
265 ------------ Testing type ------------
266
267 @pwd@>type foobaz@space@
268 bar
269
270 @pwd@>echo ***@space@
271 ***
272 bar
273 ***
274 ------------ Testing NUL ------------
275 bar
276 bar
277 bar
278 NUL
279 @todo_wine@foo created
280 ------------ Testing if/else --------------
281 if/else should work with blocks
282 if seems to work
283 else seems to work
284 @todo_wine@if seems not to detect /c as parameter
285 Testing case sensitivity with and without /i option
286 if seems to default to case sensitivity
287 if /i seems to work
288 if /I seems to work
289 doom
290 doom
291 doom
292 lol
293 quake
294 quake
295 quake
296 -----------Testing for -----------
297 ...plain FOR
298 A
299 B
300 C
301 %I
302 %I
303 %I
304 %j
305 %j
306 %j
307 A
308 B
309 C
310 1
311 4
312 1
313 A
314 B
315 C
316 X
317 X2
318 X3
319 foo
320 M
321 X
322 M
323 N
324 O
325 `echo
326 A
327 B`
328 'echo
329 A
330 B'
331 @todo_wine@"echo A B"
332 @todo_wine@"A B"
333 C
334 ...imbricated FORs
335 @todo_wine@X Y
336 @todo_wine@X Y
337 @todo_wine@A C
338 @todo_wine@A D
339 @todo_wine@B C
340 @todo_wine@B D
341 @todo_wine@A C
342 @todo_wine@A D
343 @todo_wine@B C
344 @todo_wine@B D
345 ...basic wildcards
346 bazbaz
347 ...for /d
348 baz
349 foo
350 bar
351 ...for /L
352 1
353 3
354 5
355 1
356 3
357 5
358 0
359 2
360 1
361 -1
362 @todo_wine@ErrorLevel 0
363 @todo_wine@ErrorLevel 0
364 ...for /a
365 ......individual operations
366 0
367 @todo_wine@3
368 @todo_wine@-1
369 @todo_wine@3
370 @todo_wine@6
371 @todo_wine@10
372 @todo_wine@4
373 @todo_wine@4
374 @todo_wine@-4
375 0
376 @todo_wine@2
377 @todo_wine@2
378 @todo_wine@-2
379 @todo_wine@1
380 @todo_wine@4
381 0@or_broken@1073741824
382 0@or_broken@-1073741824
383 @todo_wine@-4
384 @todo_wine@9
385 @todo_wine@2
386 0
387 @todo_wine@-1
388 @todo_wine@-3
389 0
390 @todo_wine@1
391 @todo_wine@1
392 @todo_wine@4
393 @todo_wine@1
394 @todo_wine@5
395 @todo_wine@5
396 @todo_wine@7
397 @todo_wine@5
398 @todo_wine@5
399 @todo_wine@5
400 @todo_wine@4
401 @todo_wine@6
402 @todo_wine@1
403 ......precedence and grouping
404 @todo_wine@4
405 @todo_wine@10
406 @todo_wine@18@or_broken@10
407 @todo_wine@2@or_broken@0
408 @todo_wine@2@or_broken@0
409 0@or_broken@4
410 @todo_wine@4
411 @todo_wine@3@or_broken@4
412 ......octal and hexadecimal
413 @todo_wine@3@or_broken@4
414 @todo_wine@18
415 @todo_wine@18
416 @todo_wine@15
417 ......variables
418 @todo_wine@3
419 @todo_wine@3@or_broken@foo not defined
420 @todo_wine@3@or_broken@0
421 @todo_wine@3@or_broken@0
422 @todo_wine@3@or_broken@0
423 @todo_wine@9@or_broken@0
424 0
425 @todo_wine@4@or_broken@0
426 @todo_wine@-7@or_broken@0
427 @todo_wine@-1@or_broken@0
428 @todo_wine@5@or_broken@0
429 @todo_wine@4@or_broken@0
430 @todo_wine@1@or_broken@0
431 0
432 @todo_wine@5@or_broken@0
433
434 ...for /F
435 ......string argument
436 a
437 a
438 a
439 a
440 a
441 ......fileset argument
442 .........basic blank handling
443 a
444 a
445 a
446 a
447 a
448 b
449 .........multi-line with empty lines
450 a
451 b
452 c
453 .........multiple files
454 a
455 b
456 c
457 q
458 kkk
459 q
460 kkk
461 a
462 b
463 c
464 ......eol option
465 @todo_wine@ad
466 @todo_wine@z@y
467 @todo_wine@a|d
468 @todo_wine@no output
469 @todo_wine@no output
470 ......delims option
471 @todo_wine@a
472 @todo_wine@a@space@
473 @todo_wine@a d
474 @todo_wine@a
475 @todo_wine@C r
476 @todo_wine@foo bar baz
477 @todo_wine@c:\
478 ......skip option
479 @todo_wine@c
480 @todo_wine@no output
481 @todo_wine@no output
482 -----------Testing del /a-----------
483 not-r.test not found after delete, good
484 r.test found before delete, good
485 r.test not found after delete, good
486 ------------ Testing del /q --------------
487 del /q * succeeded on file1
488 del /q * succeeded on file2.dat
489 ------------ Testing del /s --------------
490 ----------- Testing mkdir -----------
491 0
492 0
493 1
494 1
495 0
496 0
497 0
498 0
499 0
500 1
501 0
502 0
503 0
504 dir created
505 0
506 mkdir ? gives errorlevel 1
507 mkdir ?\foo gives errorlevel 1
508 mkdir foo\? gives errorlevel 1
509 ok, foo created
510 mkdir foo\bar\? gives errorlevel 1
511 ok, foo\bar created
512 foo created
513 bar created
514 foobar created
515 bar\baz created
516 mkdir foo\* errorlevel 1
517 ok, foo created
518 ----------- Testing rmdir -----------
519 0
520 dir removed
521 0
522 dir removed
523 0
524 0
525 file not removed
526 0
527 non-empty dir not removed
528 0
529 non-empty dir not removed
530 recursive rmdir succeeded
531 recursive rmdir succeeded
532 foo removed
533 bar removed
534 foobar removed
535 bar\baz removed
536 ------------ Testing attrib --------------
537 @todo_wine@A            @pwd@\foobar\foo@or_broken@A          @pwd@\foobar\foo@or_broken@A       I    @pwd@\foobar\foo
538 ... read-only attribute
539 @todo_wine@A    R       @pwd@\foobar\foo@or_broken@A    R     @pwd@\foobar\foo@or_broken@A    R  I    @pwd@\foobar\foo
540 foo
541 foo original contents
542 Read-only file not deleted
543 Read-only file forcibly deleted
544 ... recursive behaviour
545 @todo_wine@A            @pwd@\foobar\baz\level2@or_broken@A          @pwd@\foobar\baz\level2@or_broken@A       I    @pwd@\foobar\baz\level2
546 @todo_wine@A    R       @pwd@\foobar\level1@or_broken@A    R     @pwd@\foobar\level1@or_broken@A    R  I    @pwd@\foobar\level1
547 @todo_wine@A    R       @pwd@\foobar\baz\level2@or_broken@A    R     @pwd@\foobar\baz\level2@or_broken@A    R  I    @pwd@\foobar\baz\level2
548 @todo_wine@A            @pwd@\foobar\bar@or_broken@A          @pwd@\foobar\bar@or_broken@A       I    @pwd@\foobar\bar
549 ... folders processing
550 @todo_wine@             @pwd@\foobar@or_broken@           @pwd@\foobar@or_broken@        I    @pwd@\foobar
551 @todo_wine@     R       @pwd@\foobar\baz@or_broken@     R     @pwd@\foobar\baz@or_broken@           @pwd@\foobar\baz@or_broken@     R  I    @pwd@\foobar\baz
552 @todo_wine@A            @pwd@\foobar\baz\toto@or_broken@A          @pwd@\foobar\baz\toto@or_broken@A       I    @pwd@\foobar\baz\toto
553 toto
554 lulu
555 file created in read-only dir
556 ------------ Testing CALL --------------
557 foo@space@
558 @todo_wine@foo 8
559 foo@space@@space@
560 foo bar@space@
561 @todo_wine@foo ""@space@
562 @todo_wine@"" bar@space@
563 foo ''@space@
564 '' bar@space@
565 bar :testRoutine
566 foo@space@
567 foo bar
568 @todo_wine@foo ""
569 @todo_wine@"" bar
570 foo ''
571 '' bar
572 @todo_wine@0
573 @todo_wine@foo created
574 @todo_wine@Should expand foobaz
575 @todo_wine@batfile
576 @todo_wine@robinfile
577 @todo_wine@1
578 @todo_wine@1
579 non-builtin dir
580 ------------ Testing setlocal/endlocal ------------
581 ...enable/disable extensions
582 @todo_wine@ErrLev:@space@
583 ErrLev: 0
584 ErrLev: 0
585 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
586 ErrLev: 0
587 ...setlocal with corresponding endlocal
588 globalval
589 localval
590 globalval
591 globalval
592 ...setlocal with no corresponding endlocal
593 globalval
594 localval
595 @todo_wine@globalval
596 -----------Testing Errorlevel-----------
597 9009
598 1
599 errorlevel just right, good
600 abc0def@or_broken@abc1def
601 errorlevel zero, good@or_broken@errorlevel nonzero, bad
602 7 should be 7
603 7 should still be 7
604 -----------Testing GOTO-----------
605 goto with no leading space worked
606 goto with a leading space worked
607 goto with a leading tab worked
608 goto with a following space worked
609 -----------Done, jumping to EOF-----------