cmd/tests: Add RENAME tests.
[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 mixed echo modes --------------
103 @echo on
104 if 1==1 echo foo
105 if 1==1 @echo bar
106 @echo off
107 if 1==1 echo foo2
108 if 1==1 @echo bar2
109
110 @todo_wine@@pwd@>if 1 == 1 echo foo@space@
111 foo
112
113 @todo_wine@@pwd@>if 1 == 1@space@
114 bar
115 foo2
116 bar2
117 ------------ Testing rem --------------
118
119 @pwd@>rem Hello@space@
120
121 @pwd@>rem  Hello@space@
122
123 @pwd@>rem   Hello || foo@space@
124
125 @pwd@>rem echo lol@space@
126
127 @pwd@>rem echo foo & echo bar@space@
128
129 @pwd@>rem @tab@  Hello@space@
130
131 @pwd@>rem@tab@  Hello@space@
132
133 @pwd@>rem@tab@echo foo & echo bar@space@
134 ------------ Testing redirection operators --------------
135 ...stdout redirection
136 foo
137 foo@space@
138 foo@tab@
139 foo@space@
140 foo@tab@
141 foo7@space@@or_broken@foo@tab@
142 foo9@space@@or_broken@foo@tab@
143 foo1
144 foo11
145 foo12
146 ...stdout appending
147 foo
148 foo@space@
149 foob@space@
150 foob@space@
151 fooc@space@
152 foob@space@
153 fooc@space@
154 food1
155 foob@space@
156 fooc@space@
157 food1
158 food2
159 food21
160 @todo_wine@foo7@space@@space@@or_broken@not supported@space@
161 @todo_wine@foo@or_broken@not supported
162 ...redirections within IF statements
163 @todo_wine@foo1
164 @todo_wine@foo2
165 @todo_wine@foo3
166 file does not exist, ok
167 foo4
168 baz5
169 baz6@space@
170 baz7
171 baz8
172 baz
173 foo@space@
174 baz
175 foo
176 A
177 B
178 C
179 @todo_wine@------------ Testing ^ escape character --------------
180 @todo_wine@hello, world
181 @todo_wine@hello, world
182 @todo_wine@hell^o, world
183 @todo_wine@hell^o, world
184 baz
185 @todo_wine@baz
186 @todo_wine@foo | echo bar
187 @todo_wine@foo & echo bar
188 @todo_wine@bak &
189 @todo_wine@baz@space@
190 @todo_wine@0@or_broken@1
191 @todo_wine@foo > foo
192 @todo_wine@<
193 @todo_wine@ffoof
194 @todo_wine@FOO=bar | baz
195 @todo_wine@0
196 @todo_wine@FOO=bar ^| baz
197 @todo_wine@bar | baz
198 @todo_wine@0
199 ------------ Testing 'set' --------------
200 1
201 @todo_wine@0
202 FOOBAR not defined
203 @todo_wine@  baz
204 FOOBAR =  baz
205 @todo_wine@0
206 @todo_wine@  baz2
207 @todo_wine@0
208  bar
209 @todo_wine@FOOBAR= bar
210 @todo_wine@FOOBAR =  baz2
211 FOOBAR =  baz2
212 FOOBAR not defined
213 1
214 bar
215 foobar
216 FOO not defined
217 BAZ=bazbaz
218 bazbaz
219 set "FOO=bar" should not include the quotes in the variable value
220 bar
221 foo
222 ''
223 'foo@space@'
224 'foo@tab@'
225 ------------ Testing variable expansion --------------
226 ~dp0 should be directory containing batch file
227 @pwd@\
228 @pwd@\
229 CD value @pwd@@or_broken@CD value@space@
230 %
231 P
232 P
233 S
234 P
235 PS
236 ERRORLEVEL
237 0
238 00
239 0ERRORLEVEL
240 0
241 0%
242 P0
243 0S
244 P0S
245 ------------ Testing variable substrings --------------
246 q
247 qwe
248 er
249 @todo_wine@'ty'@or_broken@''
250 't'@or_broken@''
251 ert@or_broken@qwerty
252 e@or_broken@qwerty
253 ''@or_broken@'qwerty'
254 r@or_broken@qwerty
255 ------------ Testing variable substitution --------------
256 ...in FOR variables
257 @todo_wine@"A B"
258 C
259 'A B'@or_broken@''
260 'C'@or_broken@''
261 @pwd@\C D@or_broken@%~ff
262 @pwd@\E@or_broken@%~ff
263 @drive@
264 @drive@
265 @path@@or_broken@%~pd
266 @path@@or_broken@%~pd
267 L M
268 N
269 '.OOL'
270 '.TABC'
271 ''
272 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
273 @todo_wine@'@drive@@shortpath@T'@or_broken@''
274 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
275 @todo_wine@''@or_broken@'%~ai'
276 @todo_wine@''@or_broken@'%~ai'
277 @todo_wine@'--a------'@or_broken@'%~ai'
278 @todo_wine@''@or_broken@'%~ti'
279 @todo_wine@''@or_broken@'%~ti'
280 @todo_wine@''@or_broken@'%~zi'
281 @todo_wine@''@or_broken@'%~zi'
282 @drive@@path@
283 @drive@@path@
284 @drive@
285 @drive@
286 @drive@
287 @drive@
288 ''
289 '.eh'
290 ...in parameters
291 @todo_wine@"A B"
292 C
293 @todo_wine@'A B'@or_broken@''
294 'C'@or_broken@''
295 @todo_wine@@pwd@\C D
296 @pwd@\E
297 @drive@
298 @drive@
299 @path@
300 @path@
301 @todo_wine@L M
302 N
303 @todo_wine@'.OOL'
304 '.TABC'
305 ''
306 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
307 @todo_wine@'@drive@@shortpath@T'@or_broken@''
308 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
309 @drive@@path@
310 @drive@@path@
311 @drive@
312 @drive@
313 @drive@
314 @drive@
315 ''
316 '.eh'@or_broken@''
317 ------------ Testing variable delayed expansion --------------
318 ...default mode (load-time expansion)
319 foo
320 !FOO!
321 foo
322 foo
323 ...runtime (delayed) expansion mode
324 foo
325 @todo_wine@foo@or_broken@!FOO!
326 foo
327 @todo_wine@bar@or_broken@foo
328 0
329 0@or_broken@1
330 foo
331 !FOO!
332 ...using /V cmd flag
333 foo
334 @todo_wine@foo@or_broken@!FOO!
335 foo
336 !FOO!
337 ------------ Testing conditional execution --------------
338 @todo_wine@...unconditional &
339 foo1
340 bar2@space@
341 foo2
342 foobar deleted
343 @todo_wine@...on success conditional &&
344 @todo_wine@foo3 not created
345 bar4@space@
346 foo4
347 @todo_wine@...on failure conditional ||
348 @todo_wine@foo5
349 @todo_wine@foo6@space@
350 ------------ Testing cd ------------
351 singleFile
352 Current dir: @pwd@\foobar@or_broken@Current dir:@space@
353 @pwd@\foobar
354 @pwd@
355 @pwd@\foobar
356 @pwd@
357 @pwd@\foobar
358 @pwd@
359 @pwd@
360 @pwd@
361 @pwd@\foobar\bar bak
362 @pwd@\foobar\bar bak
363 @pwd@\foobar\bar bak
364 @pwd@
365 @pwd@\foobar
366 ------------ Testing type ------------
367
368 @pwd@>type foobaz@space@
369 bar
370
371 @pwd@>echo ***@space@
372 ***
373 bar
374 ***
375 ------------ Testing NUL ------------
376 bar
377 bar
378 bar
379 NUL
380 @todo_wine@foo created
381 ------------ Testing if/else --------------
382 if/else should work with blocks
383 if seems to work
384 else seems to work
385 if seems not to detect /c as parameter
386 Testing case sensitivity with and without /i option
387 if seems to default to case sensitivity
388 if /i seems to work
389 if /I seems to work
390 Testing string comparisons
391 equal
392 non equal
393 non equal
394 equal
395 Testing tabs handling
396 doom
397 doom
398 doom
399 lol
400 quake
401 quake
402 quake
403 -----------Testing for -----------
404 ...plain FOR
405 A
406 B
407 C
408 %I
409 %I
410 %I
411 %j
412 %j
413 %j
414 A
415 B
416 C
417 1
418 4
419 1
420 A
421 B
422 C
423 X
424 X2
425 X3
426 foo
427 M
428 X
429 M
430 N
431 O
432 `echo
433 A
434 B`
435 'echo
436 A
437 B'
438 @todo_wine@"echo A B"
439 @todo_wine@"A B"
440 C
441 ...imbricated FORs
442 @todo_wine@X Y
443 @todo_wine@X Y
444 @todo_wine@A C
445 @todo_wine@A D
446 @todo_wine@B C
447 @todo_wine@B D
448 @todo_wine@A C
449 @todo_wine@A D
450 @todo_wine@B C
451 @todo_wine@B D
452 ...basic wildcards
453 bazbaz
454 ...for /d
455 baz
456 foo
457 bar
458 ...for /L
459 1
460 3
461 5
462 1
463 3
464 5
465 0
466 2
467 1
468 -1
469 @todo_wine@ErrorLevel 0
470 @todo_wine@ErrorLevel 0
471 ...for /a
472 ......individual operations
473 0
474 @todo_wine@3
475 @todo_wine@-1
476 @todo_wine@3
477 @todo_wine@6
478 @todo_wine@10
479 @todo_wine@4
480 @todo_wine@4
481 @todo_wine@-4
482 0
483 @todo_wine@2
484 @todo_wine@2
485 @todo_wine@-2
486 @todo_wine@1
487 @todo_wine@4
488 0@or_broken@1073741824
489 0@or_broken@-1073741824
490 @todo_wine@-4
491 @todo_wine@9
492 @todo_wine@2
493 0
494 @todo_wine@-1
495 @todo_wine@-3
496 0
497 @todo_wine@1
498 @todo_wine@1
499 @todo_wine@4
500 @todo_wine@1
501 @todo_wine@5
502 @todo_wine@5
503 @todo_wine@7
504 @todo_wine@5
505 @todo_wine@5
506 @todo_wine@5
507 @todo_wine@4
508 @todo_wine@6
509 @todo_wine@1
510 ......precedence and grouping
511 @todo_wine@4
512 @todo_wine@10
513 @todo_wine@18@or_broken@10
514 @todo_wine@2@or_broken@0
515 @todo_wine@2@or_broken@0
516 0@or_broken@4
517 @todo_wine@4
518 @todo_wine@3@or_broken@4
519 ......octal and hexadecimal
520 @todo_wine@3@or_broken@4
521 @todo_wine@18
522 @todo_wine@18
523 @todo_wine@15
524 ......variables
525 @todo_wine@3
526 @todo_wine@3@or_broken@foo not defined
527 @todo_wine@3@or_broken@0
528 @todo_wine@3@or_broken@0
529 @todo_wine@3@or_broken@0
530 @todo_wine@9@or_broken@0
531 0
532 @todo_wine@4@or_broken@0
533 @todo_wine@-7@or_broken@0
534 @todo_wine@-1@or_broken@0
535 @todo_wine@5@or_broken@0
536 @todo_wine@4@or_broken@0
537 @todo_wine@1@or_broken@0
538 0
539 @todo_wine@5@or_broken@0
540
541 ...for /F
542 ......string argument
543 a
544 a
545 a
546 a
547 a
548 ......fileset argument
549 .........basic blank handling
550 a
551 a
552 a
553 a
554 a
555 b
556 .........multi-line with empty lines
557 a
558 b
559 c
560 .........multiple files
561 a
562 b
563 c
564 q
565 kkk
566 q
567 kkk
568 a
569 b
570 c
571 ......eol option
572 @todo_wine@ad
573 @todo_wine@z@y
574 @todo_wine@a|d
575 @todo_wine@no output
576 @todo_wine@no output
577 ......delims option
578 @todo_wine@a
579 @todo_wine@a@space@
580 @todo_wine@a d
581 @todo_wine@a
582 @todo_wine@C r
583 @todo_wine@foo bar baz
584 @todo_wine@c:\
585 ......skip option
586 @todo_wine@c
587 @todo_wine@no output
588 @todo_wine@no output
589 -----------Testing del /a-----------
590 not-r.test not found after delete, good
591 r.test found before delete, good
592 r.test not found after delete, good
593 ------------ Testing del /q --------------
594 del /q * succeeded on file1
595 del /q * succeeded on file2.dat
596 ------------ Testing del /s --------------
597 ------------ Testing rename ------------
598 ... ren and rename are synonymous ...
599 foo renamed to bar
600 bar renamed to foo
601 ... name collision ...
602 foo
603 bar
604 ... rename in other directory ...
605 @todo_wine@rename impossible in other directory
606 @todo_wine@original file still present
607 ------------ Testing mkdir ------------
608 ... md and mkdir are synonymous ...
609 0
610 0
611 ... creating an already existing directory/file must fail ...
612 1
613 1
614 ... multilevel path creation ...
615 0
616 0
617 0
618 0
619 0
620 1
621 0
622 0
623 ... trailing backslashes ...
624 0
625 dir created
626 0
627 ... invalid chars ...
628 mkdir ? gives errorlevel 1
629 mkdir ?\foo gives errorlevel 1
630 mkdir foo\? gives errorlevel 1
631 ok, foo created
632 mkdir foo\bar\? gives errorlevel 1
633 ok, foo\bar created
634 ... multiple directories at once ...
635 foo created
636 bar created
637 foobar created
638 bar\baz created
639 mkdir foo\* errorlevel 1
640 ok, foo created
641 ----------- Testing rmdir -----------
642 0
643 dir removed
644 0
645 dir removed
646 0
647 0
648 file not removed
649 0
650 non-empty dir not removed
651 0
652 non-empty dir not removed
653 recursive rmdir succeeded
654 recursive rmdir succeeded
655 foo removed
656 bar removed
657 foobar removed
658 bar\baz removed
659 ----------- Testing pushd/popd -----------
660 @pwd@
661 ...popd is no-op when dir stack is empty
662 @pwd@
663 ...pushing non-existing dir
664 @pwd@
665 ...basic behaviour
666 @pwd@\foobar
667 @pwd@
668 @pwd@\foobar\baz
669 @pwd@\foobar
670 @pwd@\foobar
671 @pwd@
672 @pwd@\foobar
673 @pwd@
674 ------------ Testing attrib --------------
675 @todo_wine@A            @pwd@\foobar\foo@or_broken@A          @pwd@\foobar\foo@or_broken@A       I    @pwd@\foobar\foo
676 ... read-only attribute
677 @todo_wine@A    R       @pwd@\foobar\foo@or_broken@A    R     @pwd@\foobar\foo@or_broken@A    R  I    @pwd@\foobar\foo
678 foo
679 foo original contents
680 Read-only file not deleted
681 Read-only file forcibly deleted
682 ... recursive behaviour
683 @todo_wine@A            @pwd@\foobar\baz\level2@or_broken@A          @pwd@\foobar\baz\level2@or_broken@A       I    @pwd@\foobar\baz\level2
684 @todo_wine@A    R       @pwd@\foobar\level1@or_broken@A    R     @pwd@\foobar\level1@or_broken@A    R  I    @pwd@\foobar\level1
685 @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
686 @todo_wine@A            @pwd@\foobar\bar@or_broken@A          @pwd@\foobar\bar@or_broken@A       I    @pwd@\foobar\bar
687 ... folders processing
688 @todo_wine@             @pwd@\foobar@or_broken@           @pwd@\foobar@or_broken@        I    @pwd@\foobar
689 @todo_wine@     R       @pwd@\foobar\baz@or_broken@     R     @pwd@\foobar\baz@or_broken@           @pwd@\foobar\baz@or_broken@     R  I    @pwd@\foobar\baz
690 @todo_wine@A            @pwd@\foobar\baz\toto@or_broken@A          @pwd@\foobar\baz\toto@or_broken@A       I    @pwd@\foobar\baz\toto
691 toto
692 lulu
693 file created in read-only dir
694 ------------ Testing assoc --------------
695 ...setting association
696 ***
697 .foo=bar
698 .foo=bar
699 +++
700 .foo=bar
701 ...resetting association
702 ***
703 +++
704 ***
705 ------------ Testing ftype --------------
706 ...setting association
707 ***
708 footype=foo_opencmd
709 .foo=footype
710 footype=foo_opencmd
711 +++
712 footype=foo_opencmd
713 ...resetting association
714 @todo_wine@original value@or_broken@buggyXP@or_broken@!FOO!
715 ------------ Testing CALL ------------
716 ... external script ...
717 foo@space@
718 foo 8
719 foo@space@@space@
720 foo bar@space@
721 @todo_wine@foo ""@space@
722 @todo_wine@"" bar@space@
723 foo ''@space@
724 '' bar@space@
725 ... internal routines ...
726 bar :testRoutine
727 foo@space@
728 foo bar
729 @todo_wine@foo ""
730 @todo_wine@"" bar
731 foo ''
732 '' bar
733 ... with builtins ...
734 @todo_wine@0
735 @todo_wine@foo created
736 @todo_wine@Should expand foobaz
737 @todo_wine@batfile
738 @todo_wine@robinfile
739 @todo_wine@1
740 @todo_wine@1
741 non-builtin dir
742 ------------ Testing SHIFT ------------
743 'p1' 'p2' 'p3' 'p4' 'p5'
744 'p2' 'p3' 'p4' 'p5' ''
745 'p3' 'p4' 'p5' '' ''
746 'p3' 'p5' '' '' ''
747 'p3' 'p5' '' '' ''
748 'p5' '' '' '' ''
749 ------------ Testing cmd invocation ------------
750 ... a batch file can delete itself ...
751 file correctly deleted
752 ... a batch file can alter itself ...
753 @todo_wine@bar
754 ------------ Testing setlocal/endlocal ------------
755 ...enable/disable extensions
756 @todo_wine@ErrLev:@space@
757 ErrLev: 0
758 ErrLev: 0
759 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
760 ErrLev: 0
761 ...setlocal with corresponding endlocal
762 globalval
763 localval
764 globalval
765 globalval
766 ...setlocal with no corresponding endlocal
767 globalval
768 localval
769 @todo_wine@globalval
770 -----------Testing Errorlevel-----------
771 9009
772 1
773 errorlevel just right, good
774 abc0def@or_broken@abc1def
775 errorlevel zero, good@or_broken@errorlevel nonzero, bad
776 7 should be 7
777 7 should still be 7
778 -----------Testing GOTO-----------
779 goto with no leading space worked
780 goto with a leading space worked
781 goto with a leading tab worked
782 goto with a following space worked
783 ---------- Testing combined CALLs/GOTOs -----------
784 world
785 cheball
786 barbare
787 bar
788 foo
789 baz
790 cheball
791 barbare