cmd/tests: 'no echo' character with chains and brackets.
[wine.git] / programs / cmd / tests / test_builtins.cmd.exp
blobc1f0d5f259c19881c38052376416cf2b45c04a7e
2 @pwd@>echo Tests for cmd's builtin commands@space@
3 Tests for cmd's builtin commands
5 @pwd@>echo ------------ Testing 'echo' [ON] ------------@space@
6 ------------ Testing 'echo' [ON] ------------
8 @pwd@>echo word@space@
9 word
11 @pwd@>echo 'singlequotedword'@space@
12 'singlequotedword'
14 @pwd@>echo "doublequotedword"@space@
15 "doublequotedword"
16 at-echoed-word
18 @pwd@>echo "/?"@space@
19 "/?"
21 @pwd@>echo.
24 @pwd@>echo .@space@
27 @pwd@>echo.word
28 word
30 @pwd@>echo .word@space@
31 .word
33 @pwd@>echo:
36 @pwd@>echo :@space@
39 @pwd@>echo:word
40 word
42 @pwd@>echo :word@space@
43 :word
45 @pwd@>echo/
48 @pwd@>echo /@space@
51 @pwd@>echo/word
52 word
54 @pwd@>echo /word@space@
55 /word
57 @pwd@>echo off now@space@
58 off now
60 @pwd@>echo word@space@@space@
61 word@space@
63 @pwd@>echo word@space@@space@@space@
64 word@space@@space@
66 @pwd@>echo word@space@
67 word
69 @pwd@>echo@tab@word@space@
70 word
72 @pwd@>echo@tab@word@space@@tab@@space@
73 word@space@@tab@
75 @pwd@>echo@tab@word@tab@@space@@space@
76 word@tab@@space@
78 @pwd@>echo word@space@
79 word
81 @pwd@>echo@space@@tab@word@space@
82 @tab@word
84 @pwd@>echo@space@@space@@tab@word@space@
85 @space@@tab@word
87 @pwd@>echo@tab@@tab@word@space@
88 @tab@word
90 @pwd@>echo @tab@ on @space@@space@
91 --- @ with chains and brackets
93 @todo_wine@@pwd@>(echo the @ character chains until && ) && echo and can hide brackets || () ||@space@
94 @todo_wine@the @ character chains until
95 @todo_wine@we leave the current depth
96 @todo_wine@and can hide brackets
97 @todo_wine@---
98 noecho1
99 noecho2
100 echo3
101 ------------ Testing 'echo' [OFF] ------------
102 word
103 'singlequotedword'
104 "doublequotedword"
105 at-echoed-word
106 "/?"
109 word
110 .word
113 word
114 :word
117 word
118 /word
119 on again
120 word@space@
121 word@space@@space@
122 word
123 word
124 word@space@@tab@
125 word@tab@@space@
126 word
127 @tab@word
128 @space@@tab@word
129 @tab@word
130 ------------ Testing mixed echo modes ------------
131 @echo on
132 if 1==1 echo foo
133 if 1==1 @echo bar
134 @echo off
135 if 1==1 echo foo2
136 if 1==1 @echo bar2
138 @todo_wine@@pwd@>if 1 == 1 echo foo@space@
141 @todo_wine@@pwd@>if 1 == 1@space@
143 foo2
144 bar2
145 ------------ Testing parameterization ------------
146 'a', 'b', 'c'
147 '"a b c"', '', ''
148 '"a b"\c', '', ''
149 'a', '~`+', '.{}!+b'
150 'a', 'b', ''
151 '"a;b"', '', ''
152 'a', 'b', ''
153 'a[b]{c}(d)e', '', ''
154 'a', '', ''
155 second line
156 'a', 'b', 'c'
157 'a', 'b', 'c'
158 'a', 'b', ''
159 ------------ Testing rem ------------
161 @pwd@>rem Hello@space@
163 @pwd@>rem Hello@space@
165 @pwd@>rem Hello || foo@space@
167 @pwd@>rem echo lol@space@
169 @pwd@>rem echo foo & echo bar@space@
171 @pwd@>rem @tab@ Hello@space@
173 @pwd@>rem@tab@ Hello@space@
175 @pwd@>rem@tab@echo foo & echo bar@space@
176 ------------ Testing redirection operators ------------
177 --- stdout redirection
179 foo@space@
180 foo@tab@
181 foo@space@
182 foo@tab@
183 foo7@space@@or_broken@foo@tab@
184 foo9@space@@or_broken@foo@tab@
185 foo1
186 foo11
187 foo12
188 foo13
189 foo14
190 foo15
191 --- stdout appending
193 foo@space@
194 foob@space@
195 foob@space@
196 fooc@space@
197 foob@space@
198 fooc@space@
199 food1
200 foob@space@
201 fooc@space@
202 food1
203 food2
204 food21
205 @todo_wine@foo7@space@@space@@or_broken@not supported@space@
206 @todo_wine@foo@or_broken@not supported
207 --- redirections within IF statements
208 @todo_wine@foo1
209 -----
210 foo2
211 foo3
212 file does not exist, ok
213 foo4
214 baz5
215 baz6@space@
216 baz7
217 baz8
219 foo@space@
225 ------------ Testing circumflex escape character ------------
226 hello, world
227 hello, world
228 hell^o, world
229 hell^o, world
230 helloworld
231 hello
232 world
233 hello
235 finished
238 foo | echo bar
239 foo & echo bar
240 bak &
241 baz@space@
242 0@or_broken@1
243 foo > foo
245 ffoof
246 WINE_FOO=bar | baz
248 WINE_FOO=bar ^| baz
249 bar | baz
251 ------------ Testing 'set' ------------
254 WINE_FOOBAR not defined
256 WINE_FOOBAR = baz
258 baz2
261 WINE_FOOBAR= bar
262 WINE_FOOBAR = baz2
263 WINE_FOOBAR = baz2
264 WINE_FOOBAR not defined
267 foobar
268 WINE_FOO not defined
269 WINE_BAZ=bazbaz
270 bazbaz
271 set "WINE_FOO=bar" should not include the quotes in the variable value
275 'foo@space@'
276 'foo@tab@'
277 'value@space@'
278 'value'
279 'jim fred'
280 '"jim" fred'
281 'jim fred'
282 'jim'
283 'apple"banana"grape'
284 ------------ Testing variable expansion ------------
285 ~p0 should be path containing batch file
286 @path@
287 @path@
288 ~dp0 should be directory containing batch file
289 @drive@@path@
290 @drive@@path@
291 CD value @pwd@@or_broken@CD value@space@
298 ERRORLEVEL
301 0ERRORLEVEL
307 ------------ Testing variable substrings ------------
311 'ty'@or_broken@''
312 't'@or_broken@''
313 ert@or_broken@qwerty
314 e@or_broken@qwerty
315 ''@or_broken@'qwerty'
316 r@or_broken@qwerty
317 ------------ Testing variable substitution ------------
318 --- in FOR variables
319 "A B"
321 "A B"
323 'A B'@or_broken@''
324 'C'@or_broken@''
325 @drive@@path@C D@or_broken@%~ff
326 @drive@@path@E@or_broken@%~ff
327 @drive@
328 @drive@
329 @path@@or_broken@%~pd
330 @path@@or_broken@%~pd
333 '.OOL'
334 '.TABC'
336 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
337 @todo_wine@'@drive@@shortpath@T'@or_broken@''
338 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
339 ''@or_broken@'%~ai'
340 ''@or_broken@'%~ai'
341 '--a------'@or_broken@'--a--------'@or_broken@'%~ai'
342 '5'@or_broken@'%~zi'
343 ''@or_broken@'%~ti'
344 ''@or_broken@'%~ti'
345 ''@or_broken@'%~zi'
346 ''@or_broken@'%~zi'
347 @drive@@path@
348 @drive@@path@
349 @drive@
350 @drive@
351 @drive@
352 @drive@
354 '.eh'
355 ',,,,,,,,,'
356 --- in parameters
357 "A B"
359 'A B'@or_broken@''
360 'C'@or_broken@''
361 @drive@@path@C D
362 @drive@@path@E
363 @drive@
364 @drive@
365 @path@
366 @path@
369 '.OOL'
370 '.TABC'
372 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
373 @todo_wine@'@drive@@shortpath@T'@or_broken@''
374 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
375 @drive@@path@
376 @drive@@path@
377 @drive@
378 @drive@
379 @drive@
380 @drive@
382 '.eh'@or_broken@''
383 ------------ Testing variable delayed expansion ------------
384 --- default mode (load-time expansion)
386 !WINE_FOO!
389 --- runtime (delayed) expansion mode
391 foo@or_broken@!WINE_FOO!
393 bar@or_broken@foo
395 0@or_broken@1
397 !WINE_FOO!
398 --- using /V cmd flag
400 foo@or_broken@!WINE_FOO!
402 !WINE_FOO!
403 ------------ Testing conditional execution ------------
404 --- unconditional ampersand
405 foo1
406 bar2@space@
407 foo2
408 foobar deleted
409 --- on success conditional and
410 @todo_wine@foo3 not created
411 bar4@space@
412 foo4
413 --- on failure conditional or
414 foo5
415 foo6@space@
416 @todo_wine@------------ Testing cd ------------
417 singleFile
418 Current dir: @drive@@path@foobar@or_broken@Current dir:@space@
419 @drive@@path@foobar
420 @pwd@
421 @drive@@path@foobar
422 @pwd@
423 @drive@@path@foobar
424 @pwd@
425 @pwd@
426 @pwd@
427 @drive@@path@foobar\bar bak
428 @drive@@path@foobar\bar bak
429 @drive@@path@foobar\bar bak
430 @drive@@path@foobar\bar bak
431 @drive@@path@foobar\bar bak
432 @pwd@
433 @drive@@path@foobar
434 ------------ Testing type ------------
436 @pwd@>type foobaz@space@
439 @pwd@>echo ---@space@
442 ---1
444 ---2
446 ---3
447 ------------ Testing NUL ------------
452 foo created
453 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
454 Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
455 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
456 Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
457 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
458 Passed: file size check on subdir\a.a [8]@or_broken@Skipping file size check on NT4
459 ------------ Testing if/else ------------
460 --- if/else should work with blocks
461 if seems to work
462 else seems to work
463 if seems not to detect /c as parameter
464 else if seems to work
465 else if seems to work
466 else if seems to work
467 --- case sensitivity with and without /i option
468 if seems to default to case sensitivity
469 if /i seems to work
470 if /I seems to work
471 --- string comparisons
472 equal
473 non equal
474 non equal
475 equal
476 --- tabs handling
477 doom
478 doom
479 doom
481 quake
482 quake
483 quake
484 --- comparison operators
485 ------ for strings
486 LSS string can be used as operand for LSS comparison
487 floats are handled as strings
488 numbers in quotes are handled as strings
489 negative numbers as well@or_broken@NT4
490 if /i seems to work for LSS
491 A LSS B
492 A LSS AB
493 A LSS BA
494 A LSS AA
495 B LSS BA
496 AB LSS B
497 AB LSS BA
498 AA LSS B
499 AA LSS AB
500 AA LSS BA
501 b LSS B@or_broken@NT4
502 a LSS B@or_broken@NT4
503 a LSS B insensitive
504 A LSS b
505 A LSS b insensitive
506 A LEQ A
507 A LEQ B
508 A LEQ AB
509 A LEQ BA
510 A LEQ AA
511 B LEQ B
512 B LEQ BA
513 AB LEQ B
514 AB LEQ AB
515 AB LEQ BA
516 BA LEQ BA
517 AA LEQ B
518 AA LEQ AB
519 AA LEQ BA
520 AA LEQ AA
521 b LEQ B@or_broken@NT4
522 b LEQ B insensitive
523 a LEQ B@or_broken@NT4
524 a LEQ B insensitive
525 A LEQ b
526 A LEQ b insensitive
527 A EQU A
528 B EQU B
529 AB EQU AB
530 BA EQU BA
531 AA EQU AA
532 A EQU a insensitive
533 A NEQ B
534 A NEQ AB
535 A NEQ BA
536 A NEQ AA
537 B NEQ A
538 B NEQ AB
539 B NEQ BA
540 B NEQ AA
541 AB NEQ A
542 AB NEQ B
543 AB NEQ BA
544 AB NEQ AA
545 BA NEQ A
546 BA NEQ B
547 BA NEQ AB
548 BA NEQ AA
549 AA NEQ A
550 AA NEQ B
551 AA NEQ AB
552 AA NEQ BA
553 A GEQ A
554 B GEQ A
555 B GEQ B
556 B GEQ AB
557 B GEQ AA
558 AB GEQ A
559 AB GEQ AB
560 AB GEQ AA
561 BA GEQ A
562 BA GEQ B
563 BA GEQ AB
564 BA GEQ BA
565 BA GEQ AA
566 AA GEQ A
567 AA GEQ AA
568 B GTR A
569 B GTR AB
570 B GTR AA
571 AB GTR A
572 AB GTR AA
573 BA GTR A
574 BA GTR B
575 BA GTR AB
576 BA GTR AA
577 AA GTR A
578 ------ for numbers
579 negative numbers handled
580 negative numbers handled
581 octal handled
582 also in negative form
583 hexa handled
584 also in negative form
585 11 LSS 101
586 0 LSS 1
587 0 LSS 10
588 0 LSS 9
589 1 LSS 10
590 1 LSS 9
591 9 LSS 10
592 0 LEQ 0
593 0 LEQ 1
594 0 LEQ 10
595 0 LEQ 9
596 1 LEQ 1
597 1 LEQ 10
598 1 LEQ 9
599 10 LEQ 10
600 9 LEQ 10
601 9 LEQ 9
602 0 EQU 0
603 1 EQU 1
604 10 EQU 10
605 9 EQU 9
606 octal ok
607 hexa ok
608 string/hexa compare ok
609 string/hexa compare ok
610 0 NEQ 1
611 0 NEQ 10
612 0 NEQ 9
613 1 NEQ 0
614 1 NEQ 10
615 1 NEQ 9
616 10 NEQ 0
617 10 NEQ 1
618 10 NEQ 9
619 9 NEQ 0
620 9 NEQ 1
621 9 NEQ 10
622 0 GEQ 0
623 1 GEQ 0
624 1 GEQ 1
625 10 GEQ 0
626 10 GEQ 1
627 10 GEQ 10
628 10 GEQ 9
629 9 GEQ 0
630 9 GEQ 1
631 9 GEQ 9
632 1 GTR 0
633 10 GTR 0
634 10 GTR 1
635 10 GTR 9
636 9 GTR 0
637 9 GTR 1
638 ------ for numbers and stringified numbers
639 strings and integers not equal
640 strings and integers not equal
642 "10" GEQ "1"
643 '1' GEQ 1@or_broken@NT4
644 1 GEQ "1"
645 "1" GEQ "1"
646 '1' GEQ "1"
647 "10" GEQ "1"
648 non NT4@or_broken@1 GEQ '1'
649 '1' GEQ '1'
651 1 GEQ "10"
653 '1' GEQ "10"
654 "10" GEQ "10"
655 --- unconditional ampersand after if one line
656 1@space@
657 2@space@
658 3 else echo 4
660 x@space@
662 x@space@
664 x@space@
666 x@space@
668 ------------ Testing for ------------
669 --- plain FOR
697 `echo
700 'echo
703 "echo A B"
704 "A B"
706 --- imbricated FORs
717 --- basic wildcards
718 bazbaz
719 --- for /d
720 baz@space@
721 foo@space@
722 bar@space@
723 PASSED
724 xxx - Should be xxx
725 Expected second line
726 --- for /R
727 Plain directory enumeration
728 Plain directory enumeration from provided root
729 File enumeration
730 File enumeration from provided root
731 Mixed enumeration
732 Mixed enumeration from provided root
733 With duplicates enumeration
734 Strip missing wildcards, keep unwildcarded names
735 for /R passed
736 --- Complex wildcards unix and windows slash
737 Windows slashes, valid path
738 ASIS: foobar\baz\bazbaz
739 WC : foobar\baz\bazbaz
740 Windows slashes, invalid path
741 ASIS: foobar\jim\bazbaz
742 Unix slashes, valid path
743 ASIS: foobar/baz/bazbaz
744 WC : bazbaz
745 Unix slashes, invalid path
746 ASIS: foobar/jim/bazbaz
747 Done
748 --- for /L
759 ErrorLevel 0
760 ErrorLevel 0
780 --- set /a
781 ------ individual operations
782 WINE_foo correctly 3
783 WINE_foo correctly -1
784 WINE_foo correctly 3
785 WINE_foo correctly 6
786 WINE_foo correctly 10
787 WINE_foo correctly 4
788 WINE_foo correctly 4
789 WINE_foo correctly -4
790 WINE_foo correctly 0
791 WINE_foo correctly 2
792 WINE_foo correctly 2
793 WINE_foo correctly -2
794 WINE_foo correctly 1
795 WINE_foo correctly 4
796 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1073741824 [0]
797 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1073741824 [0]
798 WINE_foo correctly -4
799 WINE_foo correctly 9
800 WINE_foo correctly 2
801 WINE_foo correctly 0
802 WINE_foo correctly -1
803 WINE_foo correctly -3
804 WINE_foo correctly 0
805 WINE_foo correctly 1
806 WINE_foo correctly 1
807 WINE_foo correctly 4
808 WINE_foo correctly 1
809 WINE_foo correctly 5
810 WINE_foo correctly 5
811 WINE_foo correctly 7
812 WINE_foo correctly 5
813 WINE_foo correctly 5
814 WINE_foo correctly 5
815 WINE_foo correctly 4
816 WINE_foo correctly 6
817 WINE_foo correctly 1
818 WINE_foo correctly 4
819 ------ precedence and grouping
820 WINE_foo correctly 10
821 WINE_foo correctly 18@or_broken@ERROR: WINE_foo incorrectly [18]
822 WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly 0 [2]
823 WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly [2]
824 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 4 [0]
825 WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly [4]
826 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
827 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
828 ------ octal and hexadecimal
829 WINE_foo correctly 18
830 WINE_foo correctly 18
831 WINE_foo correctly 15
832 WINE_foo correctly 3
833 ------ variables
834 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
835 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
836 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
837 WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly [4]
838 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
839 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
840 WINE_baz correctly 4@or_broken@ERROR: WINE_baz incorrectly [4]
841 WINE_foo correctly 9@or_broken@ERROR: WINE_foo incorrectly 3 [9]
842 WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly 3 [9]
843 WINE_foo correctly 0
844 WINE_foo correctly 4
845 WINE_bar correctly 4
846 WINE_foo correctly -7@or_broken@ERROR: WINE_foo incorrectly 4 [-7]
847 WINE_bar correctly -7@or_broken@ERROR: WINE_bar incorrectly 4 [-7]
848 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly -7 [-1]
849 WINE_bar correctly -1@or_broken@ERROR: WINE_bar incorrectly -7 [-1]
850 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
851 WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly [1]
852 WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly 1 [4]
853 WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly 1 [4]
854 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 4 [1]
855 WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly 4 [1]
856 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1 [0]
857 WINE_bar correctly 0@or_broken@ERROR: WINE_bar incorrectly 1 [0]
858 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
859 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
860 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
861 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
862 WINE_foo correctly 19@or_broken@ERROR: WINE_foo incorrectly 0 [19]
863 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
864 WINE_baz correctly 4
865 --- quotes
866 WINE_foo correctly 1
867 WINE_foo correctly 1
868 WINE_foo correctly 1
869 WINE_bar correctly 2
870 WINE_foo correctly 1
871 WINE_bar correctly 2
872 WINE_foo correctly 1
873 WINE_bar correctly 2
874 WINE_foo correctly 1
875 WINE_bar correctly 2
876 WINE_foo correctly 1
877 WINE_bar correctly 2
878 WINE_baz correctly 3
879 WINE_foo correctly 1
880 WINE_bar correctly 2
881 WINE_baz correctly 3
882 WINE_foo correctly 1
883 WINE_bar correctly 2
884 WINE_baz correctly 3
885 WINE_foo correctly 1
886 WINE_bar correctly 2
887 WINE_baz correctly 3
888 WINE_foo correctly 1
889 WINE_bar correctly 2
890 WINE_baz correctly 3
891 WINE_foo correctly 1
892 WINE_foo correctly 1
893 WINE_bar correctly 5
894 WINE_baz correctly 2
895 WINE_foo correctly 18
896 WINE_foo correctly 3
897 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 4 [7]
898 --- whitespace are ignored between double char operators
899 WINE_foo correctly 10@or_broken@ERROR: WINE_foo incorrectly 4 [10]
900 WINE_bar correctly 50@or_broken@ERROR: WINE_bar incorrectly 5 [50]
901 WINE_foo correctly 772@or_broken@ERROR: WINE_foo incorrectly 4 [772]
902 WINE_bar correctly 7720@or_broken@ERROR: WINE_bar incorrectly 5 [7720]
903 --- invalid operator sequence
906 ----- negative prefix
907 WINE_foo correctly -1
908 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
909 WINE_foo correctly 6
910 WINE_foo correctly 0
911 WINE_foo correctly 6
912 WINE_foo correctly 2
913 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
914 WINE_foo correctly 5
915 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly -5 [3]
916 ----- assignment tests involving the end destination
917 WINE_foo correctly 11@or_broken@ERROR: WINE_foo incorrectly 3 [11]
918 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
919 WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly [9]
920 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
921 WINE_bar correctly 10@or_broken@ERROR: WINE_bar incorrectly [10]
922 WINE_baz correctly 7@or_broken@ERROR: WINE_baz incorrectly [7]
923 WINE_foo correctly 7@or_broken@ERROR: WINE_foo incorrectly 2 [7]
924 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 2 [7]
925 ----- equal precedence on stack
926 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
927 WINE_foo correctly 0
928 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
929 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
930 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
931 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
932 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
933 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
934 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
935 WINE_foo correctly -1
936 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1 [0]
937 WINE_foo correctly 0
938 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
939 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly 0 [-1]
940 WINE_foo correctly 25@or_broken@ERROR: WINE_foo incorrectly 20 [25]
941 WINE_foo correctly 20
942 WINE_foo correctly 1
943 WINE_foo correctly 4
944 WINE_foo correctly 7
945 WINE_foo correctly 8@or_broken@ERROR: WINE_foo incorrectly 4 [8]
946 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 5 [6]
947 WINE_bar correctly 6@or_broken@ERROR: WINE_bar incorrectly 5 [6]
948 --- for /F
949 ------ string argument
951 a@or_broken@no output
953 a@or_broken@no output
955 a@or_broken@no output
957 a@or_broken@no output
959 a@or_broken@no output
960 ------ fileset argument
961 --------- basic blank handling
968 --------- multi-line with empty lines
972 --------- multiple files
983 ------ command argument
984 Passed1@or_broken@Missing functionality - Broken1
985 Passed2@or_broken@Missing functionality - Broken2
986 Passed3@or_broken@Missing functionality - Broken3
987 ------ eol option
988 and@or_broken@Broken NT4 functionality1
989 Line@or_broken@Broken NT4 functionality2
990 Line@or_broken@Broken NT4 functionality3
994 no output
995 no output
996 ------ delims option
998 a@space@
1002 foo bar baz
1004 ------ skip option
1006 no output
1007 no output
1010 no output
1011 ------ tokens= option
1012 h=%h i=a j=%j k=%k l=%l m=%m o=%o
1013 h=%h i=b j=%j k=%k l=%l m=%m o=%o
1014 h=%h i=a j=c k=e l=f m=g o=%o
1015 h=%h i=a j=e k=f g l=%l m=%m o=%o
1016 h=%h i=f j=i k=j k l m n o p q r s t u v w x y z l=%l m=%m o=%o
1017 h=%h i=f j=i k=j k l m n;;== o p q r s t u v w x y z l=%l m=%m o=%o
1018 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
1019 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
1020 h=%h i=a j=b k= l= m=%m n=%n o=%o
1021 h=%h i=a j=e k=y l=z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z m=%m n=%n o=%o
1022 h=%h i=a j=b k= l= m= n=%n o=%o
1023 h=%h i=a j=b k= l= m= n= o=%o
1024 u=a v=b w=c x=d y=e z=f A=%A a=%a
1025 @todo_wine@U=a V=b W=c X=d Y=e Z=f A=%A a=m
1026 h=%h i=a j=b k=c l=e m=%m o=%o@or_broken@h=%h i=a j=b k=c l=e m= o=%o
1027 h=%h i=e j=%j k=%k l=%l m=%m o=%o
1028 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o@or_broken@h=%h i=a j=b k=c l=d e f g m= n=%n o=%o
1029 h=%h i=a j=c k= l= m=%m n=%n o=%o@or_broken@h=%h i=a j=c k= l= m= n=%n o=%o
1030 h=%h i=b j=c k= l= m=%m n=%n o=%o@or_broken@h=%h i=b j=c k= l= m= n=%n o=%o
1031 h=%h i=b j=c k= l= m=%m n=%n o=%o@or_broken@h=%h i=b j=c k= l= m= n=%n o=%o
1032 ------------ Testing del ------------
1033 deleting 'file'
1034 errorlevel is 0, good
1035 successfully deleted 'file'
1036 attempting to delete 'file', even though it is not present
1037 errorlevel is 0, good
1038 ------------ Testing del /a ------------
1039 not-r.test not found after delete, good
1040 r.test found before delete, good
1041 r.test not found after delete, good
1042 ------------ Testing del /q ------------
1043 del /q * succeeded on file1
1044 del /q * succeeded on file2.dat
1045 ------------ Testing del /s ------------
1046 ------------ Testing rename ------------
1047 --- ren and rename are synonymous
1048 foo renamed to bar
1049 bar renamed to foo
1050 --- name collision
1053 --- rename read-only files
1054 read-only file renamed
1055 --- rename directories
1056 dir renamed
1057 read-only dir renamed
1058 --- rename in other directory
1059 rename impossible in other directory
1060 original file still present
1061 ------------ Testing move ------------
1062 --- file move
1063 file move succeeded
1064 @todo_wine@file move with overwrite succeeded@or_broken@file overwrite impossible!
1065 @todo_wine@bar@or_broken@baz
1066 read-only files are moveable
1067 file moved in subdirectory
1068 @todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
1069 @todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1
1070 --- directory move
1071 simple directory move succeeded
1072 moving a directory to itself gives error; errlevel 1
1073 ------ dir in dir move
1075 bar2
1076 foo2
1077 ------------ Testing mkdir ------------
1078 --- md and mkdir are synonymous
1081 --- creating an already existing directory/file must fail
1084 --- multilevel path creation
1093 --- trailing backslashes
1095 dir created
1097 --- invalid chars
1098 mkdir ? gives errorlevel 1
1099 mkdir ?\foo gives errorlevel 1
1100 mkdir foo\? gives errorlevel 1
1101 ok, foo created
1102 mkdir foo\bar\? gives errorlevel 1
1103 ok, foo\bar created
1104 --- multiple directories at once
1105 foo created
1106 bar created
1107 foobar created
1108 bar\baz created
1109 bazbaz created
1110 zabzab created
1111 mkdir foo\* errorlevel 1
1112 ok, foo created
1113 ------------ Testing rmdir ------------
1115 dir removed
1117 dir removed
1120 file not removed
1122 non-empty dir not removed
1124 non-empty dir not removed
1125 recursive rmdir succeeded
1126 recursive rmdir succeeded
1127 foo removed
1128 bar removed
1129 foobar removed
1130 bar\baz removed
1131 ------------ Testing pushd/popd ------------
1132 @pwd@
1133 --- popd is no-op when dir stack is empty
1134 @pwd@
1135 --- pushing non-existing dir
1136 @pwd@
1137 --- basic behaviour
1138 @drive@@path@foobar
1139 @pwd@
1140 @drive@@path@foobar\baz
1141 @drive@@path@foobar
1142 @drive@@path@foobar
1143 @pwd@
1144 @drive@@path@foobar
1145 @pwd@
1146 ------------ Testing attrib ------------
1147 A @drive@@path@foobar\foo@or_broken@A @drive@@path@foobar\foo@or_broken@A I @drive@@path@foobar\foo
1148 --- read-only attribute
1149 A R @drive@@path@foobar\foo@or_broken@A R @drive@@path@foobar\foo@or_broken@A R I @drive@@path@foobar\foo
1151 foo original contents
1152 Read-only file not deleted
1153 Read-only file forcibly deleted
1154 --- recursive behaviour
1155 A @drive@@path@foobar\baz\level2@or_broken@A @drive@@path@foobar\baz\level2@or_broken@A I @drive@@path@foobar\baz\level2
1156 A R @drive@@path@foobar\level1@or_broken@A R @drive@@path@foobar\level1@or_broken@A R I @drive@@path@foobar\level1
1157 A R @drive@@path@foobar\baz\level2@or_broken@A R @drive@@path@foobar\baz\level2@or_broken@A R I @drive@@path@foobar\baz\level2
1158 A @drive@@path@foobar\bar@or_broken@A @drive@@path@foobar\bar@or_broken@A I @drive@@path@foobar\bar
1159 --- folders processing
1160 @drive@@path@foobar@or_broken@ @drive@@path@foobar@or_broken@ I @drive@@path@foobar
1161 @todo_wine@ R @drive@@path@foobar\baz@or_broken@ R @drive@@path@foobar\baz@or_broken@ @drive@@path@foobar\baz@or_broken@ R I @drive@@path@foobar\baz
1162 A @drive@@path@foobar\baz\toto@or_broken@A @drive@@path@foobar\baz\toto@or_broken@A I @drive@@path@foobar\baz\toto
1163 toto
1164 lulu
1165 file created in read-only dir
1166 ------------ Testing assoc ------------
1167 --- setting association
1169 .foo=bar
1170 .foo=bar
1172 .foo=bar
1173 --- resetting association
1177 ------------ Testing ftype ------------
1178 --- setting association
1180 footype=foo_opencmd
1181 .foo=footype
1182 footype=foo_opencmd
1184 footype=foo_opencmd
1185 --- resetting association
1186 @todo_wine@original value@or_broken@buggyXP@or_broken@!WINE_FOO!
1187 ------------ Testing CALL ------------
1188 --- external script
1189 foo@space@
1190 foo 8
1191 foo@space@@space@
1192 foo bar@space@
1193 foo ""@space@
1194 "" bar@space@
1195 foo ''@space@
1196 '' bar@space@
1197 --- internal routines
1198 bar :testRoutine
1199 foo@space@
1200 foo bar
1201 foo ""
1202 "" bar
1203 foo ''
1204 '' bar
1205 --- with builtins
1207 foo created
1208 Should expand foobaz
1209 batfile
1210 robinfile
1213 non-builtin dir
1214 Line one
1215 Line two
1216 Get if
1217 ... and else!
1218 passed
1219 ------------ Testing SHIFT ------------
1220 'p1' 'p2' 'p3' 'p4' 'p5'
1221 'p2' 'p3' 'p4' 'p5' ''
1222 'p3' 'p4' 'p5' '' ''
1223 'p3' 'p5' '' '' ''
1224 'p3' 'p5' '' '' ''
1225 'p5' '' '' '' ''
1226 ------------ Testing cmd invocation ------------
1227 --- a batch file can delete itself
1228 file correctly deleted
1229 --- a batch file can alter itself
1231 ---------- Testing copy
1232 Passed: Found expected dummy.file
1233 Passed: Found expected dir1\file1
1234 Passed: Found expected dir1\file1
1235 Passed: Found expected dir1\file99
1236 Passed: Found expected file1
1237 Passed: Did not find dir2
1238 Passed: Did not find dir2\file1
1239 Passed: Found expected dir1\file1
1240 Passed: Found expected dir1\file2
1241 Passed: Found expected dir1\file3
1242 Passed: Found expected dir1\file1
1243 Passed: Found expected dir1\file2
1244 Passed: Found expected dir1\file3
1245 Passed: Found expected file1
1246 Passed: Found expected file2
1247 Passed: Found expected file3
1248 Passed: Did not find dir2
1249 Passed: Did not find dir2\file1
1250 Passed: Did not find dir2\file2
1251 Passed: Did not find dir2\file3
1252 Passed: Found expected testfile
1253 Passed: Found expected testfile
1254 Passed: Found expected testfile
1255 Passed: Found expected testfile
1256 Passed: Found expected testfile
1257 Passed: Found expected dir1\fred
1258 Passed: Found expected dir1\fred
1259 Passed: Found expected fred
1260 Passed: Found expected fred
1261 Passed: file size check on file1 [5]@or_broken@Skipping file size check on NT4
1262 Passed: file size check on file2 [8]@or_broken@Skipping file size check on NT4
1263 Passed: file size check on file3 [11]@or_broken@Skipping file size check on NT4
1264 Passed: file size check on file1_default [5]@or_broken@Skipping file size check on NT4
1265 Passed: file size check on file1_default2 [5]@or_broken@Skipping file size check on NT4
1266 Passed: file size check on file1_plus_eof [6]@or_broken@Skipping file size check on NT4
1267 Passed: file size check on file2_plus_eof [9]@or_broken@Skipping file size check on NT4
1268 Passed: file size check on file3_plus_eof [12]@or_broken@Skipping file size check on NT4
1269 Passed: file size check on file12_plus_eof [14]@or_broken@Skipping file size check on NT4
1270 Passed: file size check on file12_no_eof [13]@or_broken@Skipping file size check on NT4
1271 Passed: file size check on file12_eof2 [14]@or_broken@Skipping file size check on NT4
1272 Passed: file size check on file1_binary_srccopy [6]@or_broken@Skipping file size check on NT4
1273 Passed: file size check on file1_ascii_srccopy [5]@or_broken@Skipping file size check on NT4
1274 Passed: file size check on file123_default_copy [25]@or_broken@Skipping file size check on NT4
1275 Passed: file size check on file123_ascii_copy [25]@or_broken@Skipping file size check on NT4
1276 Passed: file size check on file123_binary_copy [27]@or_broken@Skipping file size check on NT4
1277 Passed: file size check on file123_mixed_copy1 [26]@or_broken@Skipping file size check on NT4
1278 Passed: file size check on file123_mixed_copy2 [27]@or_broken@Skipping file size check on NT4
1279 Passed: file size check on file123_mixed_copy3 [26]@or_broken@Skipping file size check on NT4
1280 Passed: file size check on file123_mixed_copy4 [25]@or_broken@Skipping file size check on NT4
1281 Passed: file size check on file123_mixed_copy5 [28]@or_broken@Skipping file size check on NT4
1282 Passed: file size check on file123_mixed_copy6 [19]@or_broken@Skipping file size check on NT4
1283 Passed: file size check on file123_mixed_copy7 [6]@or_broken@Skipping file size check on NT4
1284 Passed: file size check on file123_mixed_copy8 [7]@or_broken@Skipping file size check on NT4
1285 Passed: errorlevel invalid check 1
1286 Passed: Did not find dir1\file1
1287 Passed: errorlevel invalid check 2
1288 Passed: errorlevel invalid check 3
1289 ------------ Testing setlocal/endlocal ------------
1290 --- enable/disable extensions
1291 @todo_wine@ErrLev:@space@
1292 ErrLev: 0
1293 ErrLev: 0
1294 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
1295 ErrLev: 0
1296 --- setlocal with corresponding endlocal
1297 globalval
1298 localval
1299 @drive@@path@foobar\foobar2
1300 globalval
1301 @drive@@path@foobar
1302 globalval
1303 @drive@@path@foobar
1304 --- setlocal with no corresponding endlocal
1305 globalval
1306 localval
1307 @drive@@path@foobar\foobar2
1308 globalval
1309 @drive@@path@foobar
1310 --- setlocal within same batch program
1311 Var1 ok 1
1312 Var2 ok 2
1313 Var3 ok 3
1314 Directory is ok 1
1315 Var1 ok 1
1316 Var2 ok 2
1317 Var3 ok 3
1318 Directory is ok 2
1319 Var1 ok 1
1320 Var2 ok 2
1321 Var3 ok 3
1322 Directory is ok 3
1323 --- Mismatched set and end locals
1324 --- Extra setlocal in called batch
1325 value2
1326 2set1endvalue1
1327 @drive@@path@foobar\foodir3
1328 Finished:
1329 value2
1330 @drive@@path@foobar\foodir2
1331 value1
1332 @drive@@path@foobar
1333 --- Extra endlocal in called batch
1334 value2
1335 value2
1336 @drive@@path@foobar\foodir2
1337 value2
1338 @drive@@path@foobar\foodir2
1339 Finished:
1340 value2
1341 @drive@@path@foobar\foodir2
1342 value1
1343 @drive@@path@foobar
1344 --- endlocal in called function rather than batch pgm is ineffective
1353 ------------ Testing Errorlevel ------------
1354 9009
1356 errorlevel just right, good
1357 errorlevel with leading zero just right, good
1358 errorlevel with negative number OK
1359 abc0def@or_broken@abc1def
1360 errorlevel zero, good@or_broken@errorlevel nonzero, bad
1361 7 should be 7
1362 7 should still be 7
1363 ------------ Testing GOTO ------------
1364 goto with no leading space worked
1365 goto with colon and no leading space worked
1366 goto with a leading space worked
1367 goto with a leading tab worked
1368 goto with a following space worked
1369 goto with following amphersands worked
1370 goto with redirections worked
1371 Ignoring double colons worked
1372 label with mixed whitespace and no echo worked
1373 Correctly ignored trailing information
1374 ------------ Testing PATH ------------
1375 PATH=original
1376 PATH=try2
1377 PATH=try3
1378 ------------ Testing combined CALLs/GOTOs ------------
1379 world
1380 cheball
1381 barbare
1385 cheball
1386 barbare