ucrtbase: Add __current_exception() implementation.
[wine.git] / programs / cmd / tests / test_builtins.cmd.exp
blob4663c862fae89411b77e8cd39df12cc26a545c38
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 chains ------------
252 --- chain success
258 @todo_wine@---
267 @todo_wine@---
276 @todo_wine@---
278 @todo_wine@j3
279 @todo_wine@---
281 @todo_wine@---
283 @todo_wine@---
284 --- chain failure
288 @todo_wine@---
296 @todo_wine@---
301 @todo_wine@g3
302 @todo_wine@---
304 @todo_wine@---
306 @todo_wine@i3
307 @todo_wine@---
313 @todo_wine@---
317 --- chain brackets
326 @todo_wine@---
335 @todo_wine@---
337 @todo_wine@---
339 @todo_wine@---
341 @todo_wine@---
347 @todo_wine@---
352 @todo_wine@---
354 @todo_wine@---
356 @todo_wine@---
362 @todo_wine@---
366 --- chain pipe
367 @todo_wine@a@space@
368 @todo_wine@a@space@
374 @todo_wine@---
380 @todo_wine@---
384 --- chain pipe input
385 a2:[a1,a2]
386 b3:[b2:[b1,b2],b3]@or_broken@b3:[b2:,b3]
387 c4:[c3:[c2:[c1,c2],c3],c4]@or_broken@c4:[c3:[c2:,c3],c4]@or_broken@c4:[c3:,c4]
388 d2:[d1,d2]
389 e3:[e2:[e1,e2],e3]@or_broken@e3:[e2:,e3]
390 f4:[f3:[f2:[f1,f2],f3],f4]@or_broken@f4:[f3:[f2:,f3],f4]@or_broken@f4:[f3:,f4]
391 --- chain else
394 @todo_wine@---
395 @todo_wine@c3
396 @todo_wine@---
397 @todo_wine@d3
398 @todo_wine@---
399 @todo_wine@---
400 @todo_wine@---
401 @todo_wine@---
402 @todo_wine@---
403 --- chain else (if true)
404 a1 else echo a2
405 b2 else echo b3
407 c2 else echo c3
409 @todo_wine@---
411 e2 else echo e3
413 g1 else echo g2
415 h1 else echo h2
416 @todo_wine@---
417 i1 else echo i2
419 @todo_wine@j2@space@
420 @todo_wine@---
424 @todo_wine@---
431 --- chain else (if false)
432 @todo_wine@j3
441 @todo_wine@---
444 ------------ Testing 'set' ------------
447 WINE_FOOBAR not defined
449 WINE_FOOBAR = baz
451 baz2
454 WINE_FOOBAR= bar
455 WINE_FOOBAR = baz2
456 WINE_FOOBAR = baz2
457 WINE_FOOBAR not defined
460 foobar
461 WINE_FOO not defined
462 WINE_BAZ=bazbaz
463 bazbaz
464 set "WINE_FOO=bar" should not include the quotes in the variable value
468 'foo@space@'
469 'foo@tab@'
470 'value@space@'
471 'value'
472 'jim fred'
473 '"jim" fred'
474 'jim fred'
475 'jim'
476 'apple"banana"grape'
477 ------------ Testing variable expansion ------------
478 ~p0 should be path containing batch file
479 @path@
480 @path@
481 ~dp0 should be directory containing batch file
482 @drive@@path@
483 @drive@@path@
484 CD value @pwd@@or_broken@CD value@space@
491 ERRORLEVEL
494 0ERRORLEVEL
500 ------------ Testing variable substrings ------------
504 'ty'@or_broken@''
505 't'@or_broken@''
506 ert@or_broken@qwerty
507 e@or_broken@qwerty
508 ''@or_broken@'qwerty'
509 r@or_broken@qwerty
510 ------------ Testing variable substitution ------------
511 --- in FOR variables
512 "A B"
514 "A B"
516 'A B'@or_broken@''
517 'C'@or_broken@''
518 @drive@@path@C D@or_broken@%~ff
519 @drive@@path@E@or_broken@%~ff
520 @drive@
521 @drive@
522 @path@@or_broken@%~pd
523 @path@@or_broken@%~pd
526 '.OOL'
527 '.TABC'
529 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
530 @todo_wine@'@drive@@shortpath@T'@or_broken@''
531 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
532 ''@or_broken@'%~ai'
533 ''@or_broken@'%~ai'
534 '--a------'@or_broken@'--a--------'@or_broken@'--a--c---'@or_broken@'%~ai'
535 '5'@or_broken@'%~zi'
536 ''@or_broken@'%~ti'
537 ''@or_broken@'%~ti'
538 ''@or_broken@'%~zi'
539 ''@or_broken@'%~zi'
540 @drive@@path@
541 @drive@@path@
542 @drive@
543 @drive@
544 @drive@
545 @drive@
547 '.eh'
548 ',,,,,,,,,'
549 --- in parameters
550 "A B"
552 'A B'@or_broken@''
553 'C'@or_broken@''
554 @drive@@path@C D
555 @drive@@path@E
556 @drive@
557 @drive@
558 @path@
559 @path@
562 '.OOL'
563 '.TABC'
565 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
566 @todo_wine@'@drive@@shortpath@T'@or_broken@''
567 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
568 @drive@@path@
569 @drive@@path@
570 @drive@
571 @drive@
572 @drive@
573 @drive@
575 '.eh'@or_broken@''
576 ------------ Testing variable delayed expansion ------------
577 --- default mode (load-time expansion)
579 !WINE_FOO!
582 --- runtime (delayed) expansion mode
584 foo@or_broken@!WINE_FOO!
586 bar@or_broken@foo
588 0@or_broken@1
590 !WINE_FOO!
591 --- using /V cmd flag
593 foo@or_broken@!WINE_FOO!
595 !WINE_FOO!
596 ------------ Testing conditional execution ------------
597 --- unconditional ampersand
598 foo1
599 bar2@space@
600 foo2
601 foobar deleted
602 --- on success conditional and
603 @todo_wine@foo3 not created
604 bar4@space@
605 foo4
606 --- on failure conditional or
607 foo5
608 foo6@space@
609 @todo_wine@------------ Testing cd ------------
610 singleFile
611 Current dir: @drive@@path@foobar@or_broken@Current dir:@space@
612 @drive@@path@foobar
613 @pwd@
614 @drive@@path@foobar
615 @pwd@
616 @drive@@path@foobar
617 @pwd@
618 @pwd@
619 @pwd@
620 @drive@@path@foobar\bar bak
621 @drive@@path@foobar\bar bak
622 @drive@@path@foobar\bar bak
623 @drive@@path@foobar\bar bak
624 @drive@@path@foobar\bar bak
625 @pwd@
626 @drive@@path@foobar
627 ------------ Testing type ------------
629 @pwd@>type foobaz@space@
632 @pwd@>echo ---@space@
635 ---1
637 ---2
639 ---3
640 ------------ Testing NUL ------------
645 foo created
646 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
647 Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
648 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
649 Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
650 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
651 Passed: file size check on subdir\a.a [8]@or_broken@Skipping file size check on NT4
652 ------------ Testing if/else ------------
653 --- if/else should work with blocks
654 if seems to work
655 else seems to work
656 if seems not to detect /c as parameter
657 else if seems to work
658 else if seems to work
659 else if seems to work
660 --- case sensitivity with and without /i option
661 if seems to default to case sensitivity
662 if /i seems to work
663 if /I seems to work
664 --- string comparisons
665 equal
666 non equal
667 non equal
668 equal
669 --- tabs handling
670 doom
671 doom
672 doom
674 quake
675 quake
676 quake
677 --- comparison operators
678 ------ for strings
679 LSS string can be used as operand for LSS comparison
680 floats are handled as strings
681 numbers in quotes are handled as strings
682 negative numbers as well@or_broken@NT4
683 if /i seems to work for LSS
684 A LSS B
685 A LSS AB
686 A LSS BA
687 A LSS AA
688 B LSS BA
689 AB LSS B
690 AB LSS BA
691 AA LSS B
692 AA LSS AB
693 AA LSS BA
694 b LSS B@or_broken@NT4
695 a LSS B@or_broken@NT4
696 a LSS B insensitive
697 A LSS b
698 A LSS b insensitive
699 A LEQ A
700 A LEQ B
701 A LEQ AB
702 A LEQ BA
703 A LEQ AA
704 B LEQ B
705 B LEQ BA
706 AB LEQ B
707 AB LEQ AB
708 AB LEQ BA
709 BA LEQ BA
710 AA LEQ B
711 AA LEQ AB
712 AA LEQ BA
713 AA LEQ AA
714 b LEQ B@or_broken@NT4
715 b LEQ B insensitive
716 a LEQ B@or_broken@NT4
717 a LEQ B insensitive
718 A LEQ b
719 A LEQ b insensitive
720 A EQU A
721 B EQU B
722 AB EQU AB
723 BA EQU BA
724 AA EQU AA
725 A EQU a insensitive
726 A NEQ B
727 A NEQ AB
728 A NEQ BA
729 A NEQ AA
730 B NEQ A
731 B NEQ AB
732 B NEQ BA
733 B NEQ AA
734 AB NEQ A
735 AB NEQ B
736 AB NEQ BA
737 AB NEQ AA
738 BA NEQ A
739 BA NEQ B
740 BA NEQ AB
741 BA NEQ AA
742 AA NEQ A
743 AA NEQ B
744 AA NEQ AB
745 AA NEQ BA
746 A GEQ A
747 B GEQ A
748 B GEQ B
749 B GEQ AB
750 B GEQ AA
751 AB GEQ A
752 AB GEQ AB
753 AB GEQ AA
754 BA GEQ A
755 BA GEQ B
756 BA GEQ AB
757 BA GEQ BA
758 BA GEQ AA
759 AA GEQ A
760 AA GEQ AA
761 B GTR A
762 B GTR AB
763 B GTR AA
764 AB GTR A
765 AB GTR AA
766 BA GTR A
767 BA GTR B
768 BA GTR AB
769 BA GTR AA
770 AA GTR A
771 ------ for numbers
772 negative numbers handled
773 negative numbers handled
774 octal handled
775 also in negative form
776 hexa handled
777 also in negative form
778 11 LSS 101
779 0 LSS 1
780 0 LSS 10
781 0 LSS 9
782 1 LSS 10
783 1 LSS 9
784 9 LSS 10
785 0 LEQ 0
786 0 LEQ 1
787 0 LEQ 10
788 0 LEQ 9
789 1 LEQ 1
790 1 LEQ 10
791 1 LEQ 9
792 10 LEQ 10
793 9 LEQ 10
794 9 LEQ 9
795 0 EQU 0
796 1 EQU 1
797 10 EQU 10
798 9 EQU 9
799 octal ok
800 hexa ok
801 string/hexa compare ok
802 string/hexa compare ok
803 0 NEQ 1
804 0 NEQ 10
805 0 NEQ 9
806 1 NEQ 0
807 1 NEQ 10
808 1 NEQ 9
809 10 NEQ 0
810 10 NEQ 1
811 10 NEQ 9
812 9 NEQ 0
813 9 NEQ 1
814 9 NEQ 10
815 0 GEQ 0
816 1 GEQ 0
817 1 GEQ 1
818 10 GEQ 0
819 10 GEQ 1
820 10 GEQ 10
821 10 GEQ 9
822 9 GEQ 0
823 9 GEQ 1
824 9 GEQ 9
825 1 GTR 0
826 10 GTR 0
827 10 GTR 1
828 10 GTR 9
829 9 GTR 0
830 9 GTR 1
831 ------ for numbers and stringified numbers
832 strings and integers not equal
833 strings and integers not equal
835 "10" GEQ "1"
836 '1' GEQ 1@or_broken@NT4
837 1 GEQ "1"
838 "1" GEQ "1"
839 '1' GEQ "1"
840 "10" GEQ "1"
841 non NT4@or_broken@1 GEQ '1'
842 '1' GEQ '1'
844 1 GEQ "10"
846 '1' GEQ "10"
847 "10" GEQ "10"
848 --- unconditional ampersand after if one line
849 1@space@
850 2@space@
851 3 else echo 4
853 x@space@
855 x@space@
857 x@space@
859 x@space@
861 ------------ Testing for ------------
862 --- plain FOR
890 `echo
893 'echo
896 "echo A B"
897 "A B"
899 --- imbricated FORs
910 --- basic wildcards
911 bazbaz
912 --- for /d
913 baz@space@
914 foo@space@
915 bar@space@
916 PASSED
917 xxx - Should be xxx
918 Expected second line
919 --- for /R
920 Plain directory enumeration
921 Plain directory enumeration from provided root
922 File enumeration
923 File enumeration from provided root
924 Mixed enumeration
925 Mixed enumeration from provided root
926 With duplicates enumeration
927 Strip missing wildcards, keep unwildcarded names
928 for /R passed
929 --- Complex wildcards unix and windows slash
930 Windows slashes, valid path
931 ASIS: foobar\baz\bazbaz
932 WC : foobar\baz\bazbaz
933 Windows slashes, invalid path
934 ASIS: foobar\jim\bazbaz
935 Unix slashes, valid path
936 ASIS: foobar/baz/bazbaz
937 WC : bazbaz
938 Unix slashes, invalid path
939 ASIS: foobar/jim/bazbaz
940 Done
941 --- for /L
952 ErrorLevel 0
953 ErrorLevel 0
973 --- set /a
974 ------ individual operations
975 WINE_foo correctly 3
976 WINE_foo correctly -1
977 WINE_foo correctly 3
978 WINE_foo correctly 6
979 WINE_foo correctly 10
980 WINE_foo correctly 4
981 WINE_foo correctly 4
982 WINE_foo correctly -4
983 WINE_foo correctly 0
984 WINE_foo correctly 2
985 WINE_foo correctly 2
986 WINE_foo correctly -2
987 WINE_foo correctly 1
988 WINE_foo correctly 4
989 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1073741824 [0]
990 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1073741824 [0]
991 WINE_foo correctly -4
992 WINE_foo correctly 9
993 WINE_foo correctly 2
994 WINE_foo correctly 0
995 WINE_foo correctly -1
996 WINE_foo correctly -3
997 WINE_foo correctly 0
998 WINE_foo correctly 1
999 WINE_foo correctly 1
1000 WINE_foo correctly 4
1001 WINE_foo correctly 1
1002 WINE_foo correctly 5
1003 WINE_foo correctly 5
1004 WINE_foo correctly 7
1005 WINE_foo correctly 5
1006 WINE_foo correctly 5
1007 WINE_foo correctly 5
1008 WINE_foo correctly 4
1009 WINE_foo correctly 6
1010 WINE_foo correctly 1
1011 WINE_foo correctly 4
1012 ------ precedence and grouping
1013 WINE_foo correctly 10
1014 WINE_foo correctly 18@or_broken@ERROR: WINE_foo incorrectly [18]
1015 WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly 0 [2]
1016 WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly [2]
1017 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 4 [0]
1018 WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly [4]
1019 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
1020 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
1021 ------ octal and hexadecimal
1022 WINE_foo correctly 18
1023 WINE_foo correctly 18
1024 WINE_foo correctly 15
1025 WINE_foo correctly 3
1026 ------ variables
1027 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
1028 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
1029 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
1030 WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly [4]
1031 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
1032 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
1033 WINE_baz correctly 4@or_broken@ERROR: WINE_baz incorrectly [4]
1034 WINE_foo correctly 9@or_broken@ERROR: WINE_foo incorrectly 3 [9]
1035 WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly 3 [9]
1036 WINE_foo correctly 0
1037 WINE_foo correctly 4
1038 WINE_bar correctly 4
1039 WINE_foo correctly -7@or_broken@ERROR: WINE_foo incorrectly 4 [-7]
1040 WINE_bar correctly -7@or_broken@ERROR: WINE_bar incorrectly 4 [-7]
1041 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly -7 [-1]
1042 WINE_bar correctly -1@or_broken@ERROR: WINE_bar incorrectly -7 [-1]
1043 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
1044 WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly [1]
1045 WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly 1 [4]
1046 WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly 1 [4]
1047 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 4 [1]
1048 WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly 4 [1]
1049 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1 [0]
1050 WINE_bar correctly 0@or_broken@ERROR: WINE_bar incorrectly 1 [0]
1051 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
1052 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
1053 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
1054 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
1055 WINE_foo correctly 19@or_broken@ERROR: WINE_foo incorrectly 0 [19]
1056 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
1057 WINE_baz correctly 4
1058 --- quotes
1059 WINE_foo correctly 1
1060 WINE_foo correctly 1
1061 WINE_foo correctly 1
1062 WINE_bar correctly 2
1063 WINE_foo correctly 1
1064 WINE_bar correctly 2
1065 WINE_foo correctly 1
1066 WINE_bar correctly 2
1067 WINE_foo correctly 1
1068 WINE_bar correctly 2
1069 WINE_foo correctly 1
1070 WINE_bar correctly 2
1071 WINE_baz correctly 3
1072 WINE_foo correctly 1
1073 WINE_bar correctly 2
1074 WINE_baz correctly 3
1075 WINE_foo correctly 1
1076 WINE_bar correctly 2
1077 WINE_baz correctly 3
1078 WINE_foo correctly 1
1079 WINE_bar correctly 2
1080 WINE_baz correctly 3
1081 WINE_foo correctly 1
1082 WINE_bar correctly 2
1083 WINE_baz correctly 3
1084 WINE_foo correctly 1
1085 WINE_foo correctly 1
1086 WINE_bar correctly 5
1087 WINE_baz correctly 2
1088 WINE_foo correctly 18
1089 WINE_foo correctly 3
1090 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 4 [7]
1091 --- whitespace are ignored between double char operators
1092 WINE_foo correctly 10@or_broken@ERROR: WINE_foo incorrectly 4 [10]
1093 WINE_bar correctly 50@or_broken@ERROR: WINE_bar incorrectly 5 [50]
1094 WINE_foo correctly 772@or_broken@ERROR: WINE_foo incorrectly 4 [772]
1095 WINE_bar correctly 7720@or_broken@ERROR: WINE_bar incorrectly 5 [7720]
1096 --- invalid operator sequence
1099 ----- negative prefix
1100 WINE_foo correctly -1
1101 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
1102 WINE_foo correctly 6
1103 WINE_foo correctly 0
1104 WINE_foo correctly 6
1105 WINE_foo correctly 2
1106 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
1107 WINE_foo correctly 5
1108 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly -5 [3]
1109 ----- assignment tests involving the end destination
1110 WINE_foo correctly 11@or_broken@ERROR: WINE_foo incorrectly 3 [11]
1111 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
1112 WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly [9]
1113 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
1114 WINE_bar correctly 10@or_broken@ERROR: WINE_bar incorrectly [10]
1115 WINE_baz correctly 7@or_broken@ERROR: WINE_baz incorrectly [7]
1116 WINE_foo correctly 7@or_broken@ERROR: WINE_foo incorrectly 2 [7]
1117 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 2 [7]
1118 ----- equal precedence on stack
1119 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
1120 WINE_foo correctly 0
1121 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
1122 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
1123 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
1124 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
1125 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
1126 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
1127 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
1128 WINE_foo correctly -1
1129 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1 [0]
1130 WINE_foo correctly 0
1131 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
1132 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly 0 [-1]
1133 WINE_foo correctly 25@or_broken@ERROR: WINE_foo incorrectly 20 [25]
1134 WINE_foo correctly 20
1135 WINE_foo correctly 1
1136 WINE_foo correctly 4
1137 WINE_foo correctly 7
1138 WINE_foo correctly 8@or_broken@ERROR: WINE_foo incorrectly 4 [8]
1139 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 5 [6]
1140 WINE_bar correctly 6@or_broken@ERROR: WINE_bar incorrectly 5 [6]
1141 --- for /F
1142 ------ string argument
1144 a@or_broken@no output
1146 a@or_broken@no output
1148 a@or_broken@no output
1150 a@or_broken@no output
1152 a@or_broken@no output
1153 ------ fileset argument
1154 --------- basic blank handling
1161 --------- multi-line with empty lines
1165 --------- multiple files
1176 ------ command argument
1177 Passed1@or_broken@Missing functionality - Broken1
1178 Passed2@or_broken@Missing functionality - Broken2
1179 Passed3@or_broken@Missing functionality - Broken3
1180 ------ eol option
1181 and@or_broken@Broken NT4 functionality1
1182 Line@or_broken@Broken NT4 functionality2
1183 Line@or_broken@Broken NT4 functionality3
1187 no output
1188 no output
1189 ------ delims option
1191 a@space@
1195 foo bar baz
1197 ------ skip option
1199 no output
1200 no output
1203 no output
1204 ------ tokens= option
1205 h=%h i=a j=%j k=%k l=%l m=%m o=%o
1206 h=%h i=b j=%j k=%k l=%l m=%m o=%o
1207 h=%h i=a j=c k=e l=f m=g o=%o
1208 h=%h i=a j=e k=f g l=%l m=%m o=%o
1209 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
1210 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
1211 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
1212 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
1213 h=%h i=a j=b k= l= m=%m n=%n o=%o
1214 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
1215 h=%h i=a j=b k= l= m= n=%n o=%o
1216 h=%h i=a j=b k= l= m= n= o=%o
1217 u=a v=b w=c x=d y=e z=f A=%A a=%a
1218 @todo_wine@U=a V=b W=c X=d Y=e Z=f A=%A a=m
1219 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
1220 h=%h i=e j=%j k=%k l=%l m=%m o=%o
1221 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
1222 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
1223 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
1224 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
1225 ------ parameter splitting
1226 :forFParameterSplittingFunc myparam1=myvalue1 myparam2=myparam2 mytest@space@@space@@space@
1227 :forFParameterSplittingFunc myparam1=myvalue1 myparam2=myparam2 mytest@space@@space@@space@
1228 ------------ Testing del ------------
1229 deleting 'file'
1230 errorlevel is 0, good
1231 successfully deleted 'file'
1232 attempting to delete 'file', even though it is not present
1233 errorlevel is 0, good
1234 ------------ Testing del /a ------------
1235 not-r.test not found after delete, good
1236 r.test found before delete, good
1237 r.test not found after delete, good
1238 ------------ Testing del /q ------------
1239 del /q * succeeded on file1
1240 del /q * succeeded on file2.dat
1241 ------------ Testing del /s ------------
1242 ------------ Testing rename ------------
1243 --- ren and rename are synonymous
1244 foo renamed to bar
1245 bar renamed to foo
1246 --- name collision
1249 --- rename read-only files
1250 read-only file renamed
1251 --- rename directories
1252 dir renamed
1253 read-only dir renamed
1254 --- rename in other directory
1255 rename impossible in other directory
1256 original file still present
1257 ------------ Testing move ------------
1258 --- file move
1259 file move succeeded
1260 @todo_wine@file move with overwrite succeeded@or_broken@file overwrite impossible!
1261 @todo_wine@bar@or_broken@baz
1262 read-only files are moveable
1263 file moved in subdirectory
1264 @todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
1265 @todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1
1266 --- directory move
1267 simple directory move succeeded
1268 moving a directory to itself gives error; errlevel 1
1269 ------ dir in dir move
1271 bar2
1272 foo2
1273 ------------ Testing mkdir ------------
1274 --- md and mkdir are synonymous
1277 --- creating an already existing directory/file must fail
1280 --- multilevel path creation
1289 --- trailing backslashes
1291 dir created
1293 --- invalid chars
1294 mkdir ? gives errorlevel 1
1295 mkdir ?\foo gives errorlevel 1
1296 mkdir foo\? gives errorlevel 1
1297 ok, foo created
1298 mkdir foo\bar\? gives errorlevel 1
1299 ok, foo\bar created
1300 --- multiple directories at once
1301 foo created
1302 bar created
1303 foobar created
1304 bar\baz created
1305 bazbaz created
1306 zabzab created
1307 mkdir foo\* errorlevel 1
1308 ok, foo created
1309 ------------ Testing rmdir ------------
1311 dir removed
1313 dir removed
1316 file not removed
1318 non-empty dir not removed
1320 non-empty dir not removed
1321 recursive rmdir succeeded
1322 recursive rmdir succeeded
1323 foo removed
1324 bar removed
1325 foobar removed
1326 bar\baz removed
1327 ------------ Testing pushd/popd ------------
1328 @pwd@
1329 --- popd is no-op when dir stack is empty
1330 @pwd@
1331 --- pushing non-existing dir
1332 @pwd@
1333 --- basic behaviour
1334 @drive@@path@foobar
1335 @pwd@
1336 @drive@@path@foobar\baz
1337 @drive@@path@foobar
1338 @drive@@path@foobar
1339 @pwd@
1340 @drive@@path@foobar
1341 @pwd@
1342 ------------ Testing attrib ------------
1343 A @drive@@path@foobar\foo@or_broken@A @drive@@path@foobar\foo@or_broken@A I @drive@@path@foobar\foo
1344 --- read-only attribute
1345 A R @drive@@path@foobar\foo@or_broken@A R @drive@@path@foobar\foo@or_broken@A R I @drive@@path@foobar\foo
1347 foo original contents
1348 Read-only file not deleted
1349 Read-only file forcibly deleted
1350 --- recursive behaviour
1351 A @drive@@path@foobar\baz\level2@or_broken@A @drive@@path@foobar\baz\level2@or_broken@A I @drive@@path@foobar\baz\level2
1352 A R @drive@@path@foobar\level1@or_broken@A R @drive@@path@foobar\level1@or_broken@A R I @drive@@path@foobar\level1
1353 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
1354 A @drive@@path@foobar\bar@or_broken@A @drive@@path@foobar\bar@or_broken@A I @drive@@path@foobar\bar
1355 --- folders processing
1356 @drive@@path@foobar@or_broken@ @drive@@path@foobar@or_broken@ I @drive@@path@foobar
1357 @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
1358 A @drive@@path@foobar\baz\toto@or_broken@A @drive@@path@foobar\baz\toto@or_broken@A I @drive@@path@foobar\baz\toto
1359 toto
1360 lulu
1361 file created in read-only dir
1362 ------------ Testing assoc ------------
1363 --- setting association
1365 .foo=bar
1366 .foo=bar
1368 .foo=bar
1369 --- resetting association
1373 ------------ Testing ftype ------------
1374 --- setting association
1376 footype=foo_opencmd
1377 .foo=footype
1378 footype=foo_opencmd
1380 footype=foo_opencmd
1381 --- resetting association
1382 @todo_wine@original value@or_broken@buggyXP@or_broken@!WINE_FOO!
1383 ------------ Testing CALL ------------
1384 --- external script
1385 foo@space@
1386 foo 8
1387 foo@space@@space@
1388 foo bar@space@
1389 foo ""@space@
1390 "" bar@space@
1391 foo ''@space@
1392 '' bar@space@
1393 --- internal routines
1394 bar :testRoutine
1395 foo@space@
1396 foo bar
1397 foo ""
1398 "" bar
1399 foo ''
1400 '' bar
1401 --- with builtins
1403 foo created
1404 Should expand foobaz
1405 batfile
1406 robinfile
1409 non-builtin dir
1410 Line one
1411 Line two
1412 Get if
1413 ... and else!
1414 passed
1415 ------------ Testing SHIFT ------------
1416 'p1' 'p2' 'p3' 'p4' 'p5'
1417 'p2' 'p3' 'p4' 'p5' ''
1418 'p3' 'p4' 'p5' '' ''
1419 'p3' 'p5' '' '' ''
1420 'p3' 'p5' '' '' ''
1421 'p5' '' '' '' ''
1422 ------------ Testing cmd invocation ------------
1423 --- a batch file can delete itself
1424 file correctly deleted
1425 --- a batch file can alter itself
1427 ---------- Testing copy
1428 Passed: Found expected dummy.file
1429 Passed: Found expected dir1\file1
1430 Passed: Found expected dir1\file1
1431 Passed: Found expected dir1\file99
1432 Passed: Found expected file1
1433 Passed: Did not find dir2
1434 Passed: Did not find dir2\file1
1435 Passed: Found expected dir1\file1
1436 Passed: Found expected dir1\file2
1437 Passed: Found expected dir1\file3
1438 Passed: Found expected dir1\file1
1439 Passed: Found expected dir1\file2
1440 Passed: Found expected dir1\file3
1441 Passed: Found expected file1
1442 Passed: Found expected file2
1443 Passed: Found expected file3
1444 Passed: Did not find dir2
1445 Passed: Did not find dir2\file1
1446 Passed: Did not find dir2\file2
1447 Passed: Did not find dir2\file3
1448 Passed: Found expected testfile
1449 Passed: Found expected testfile
1450 Passed: Found expected testfile
1451 Passed: Found expected testfile
1452 Passed: Found expected testfile
1453 Passed: Found expected dir1\fred
1454 Passed: Found expected dir1\fred
1455 Passed: Found expected fred
1456 Passed: Found expected fred
1457 Passed: file size check on file1 [5]@or_broken@Skipping file size check on NT4
1458 Passed: file size check on file2 [8]@or_broken@Skipping file size check on NT4
1459 Passed: file size check on file3 [11]@or_broken@Skipping file size check on NT4
1460 Passed: file size check on file1_default [5]@or_broken@Skipping file size check on NT4
1461 Passed: file size check on file1_default2 [5]@or_broken@Skipping file size check on NT4
1462 Passed: file size check on file1_plus_eof [6]@or_broken@Skipping file size check on NT4
1463 Passed: file size check on file2_plus_eof [9]@or_broken@Skipping file size check on NT4
1464 Passed: file size check on file3_plus_eof [12]@or_broken@Skipping file size check on NT4
1465 Passed: file size check on file12_plus_eof [14]@or_broken@Skipping file size check on NT4
1466 Passed: file size check on file12_no_eof [13]@or_broken@Skipping file size check on NT4
1467 Passed: file size check on file12_eof2 [14]@or_broken@Skipping file size check on NT4
1468 Passed: file size check on file1 [24]@or_broken@Skipping file size check on NT4
1469 Passed: file size check on file2 [16]@or_broken@Skipping file size check on NT4
1470 Passed: file size check on file3 [13]@or_broken@Skipping file size check on NT4
1471 Passed: file size check on file1_binary_srccopy [6]@or_broken@Skipping file size check on NT4
1472 Passed: file size check on file1_ascii_srccopy [5]@or_broken@Skipping file size check on NT4
1473 Passed: file size check on file123_default_copy [25]@or_broken@Skipping file size check on NT4
1474 Passed: file size check on file123_ascii_copy [25]@or_broken@Skipping file size check on NT4
1475 Passed: file size check on file123_binary_copy [27]@or_broken@Skipping file size check on NT4
1476 Passed: file size check on file123_mixed_copy1 [26]@or_broken@Skipping file size check on NT4
1477 Passed: file size check on file123_mixed_copy2 [27]@or_broken@Skipping file size check on NT4
1478 Passed: file size check on file123_mixed_copy3 [26]@or_broken@Skipping file size check on NT4
1479 Passed: file size check on file123_mixed_copy4 [25]@or_broken@Skipping file size check on NT4
1480 Passed: file size check on file123_mixed_copy5 [28]@or_broken@Skipping file size check on NT4
1481 Passed: file size check on file123_mixed_copy6 [19]@or_broken@Skipping file size check on NT4
1482 Passed: file size check on file123_mixed_copy7 [6]@or_broken@Skipping file size check on NT4
1483 Passed: file size check on file123_mixed_copy8 [7]@or_broken@Skipping file size check on NT4
1484 Passed: errorlevel invalid check 1
1485 Passed: Did not find dir1\file1
1486 Passed: errorlevel invalid check 2
1487 Passed: errorlevel invalid check 3
1488 ------------ Testing setlocal/endlocal ------------
1489 --- enable/disable extensions
1490 @todo_wine@ErrLev:@space@
1491 ErrLev: 0
1492 ErrLev: 0
1493 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
1494 ErrLev: 0
1495 --- setlocal with corresponding endlocal
1496 globalval
1497 localval
1498 @drive@@path@foobar\foobar2
1499 globalval
1500 @drive@@path@foobar
1501 globalval
1502 @drive@@path@foobar
1503 --- setlocal with no corresponding endlocal
1504 globalval
1505 localval
1506 @drive@@path@foobar\foobar2
1507 globalval
1508 @drive@@path@foobar
1509 --- setlocal within same batch program
1510 Var1 ok 1
1511 Var2 ok 2
1512 Var3 ok 3
1513 Directory is ok 1
1514 Var1 ok 1
1515 Var2 ok 2
1516 Var3 ok 3
1517 Directory is ok 2
1518 Var1 ok 1
1519 Var2 ok 2
1520 Var3 ok 3
1521 Directory is ok 3
1522 --- Mismatched set and end locals
1523 --- Extra setlocal in called batch
1524 value2
1525 2set1endvalue1
1526 @drive@@path@foobar\foodir3
1527 Finished:
1528 value2
1529 @drive@@path@foobar\foodir2
1530 value1
1531 @drive@@path@foobar
1532 --- Extra endlocal in called batch
1533 value2
1534 value2
1535 @drive@@path@foobar\foodir2
1536 value2
1537 @drive@@path@foobar\foodir2
1538 Finished:
1539 value2
1540 @drive@@path@foobar\foodir2
1541 value1
1542 @drive@@path@foobar
1543 --- endlocal in called function rather than batch pgm is ineffective
1552 ------------ Testing Errorlevel ------------
1553 9009
1555 errorlevel just right, good
1556 errorlevel with leading zero just right, good
1557 errorlevel with negative number OK
1558 abc0def@or_broken@abc1def
1559 errorlevel zero, good@or_broken@errorlevel nonzero, bad
1560 7 should be 7
1561 7 should still be 7
1562 ------------ Testing GOTO ------------
1563 goto with no leading space worked
1564 goto with colon and no leading space worked
1565 goto with a leading space worked
1566 goto with a leading tab worked
1567 goto with a following space worked
1568 goto with following amphersands worked
1569 goto with redirections worked
1570 Ignoring double colons worked
1571 label with mixed whitespace and no echo worked
1572 Correctly ignored trailing information
1573 ------------ Testing PATH ------------
1574 PATH=original
1575 PATH=try2
1576 PATH=try3
1577 ------------ Testing combined CALLs/GOTOs ------------
1578 world
1579 cheball
1580 barbare
1584 cheball
1585 barbare