shell32: Fix threading model for the Known Folder Manager and Shell Link objects.
[wine.git] / programs / cmd / tests / test_builtins.cmd.exp
blob4dddc71cc86bcfd04ffe97e1e1056009e0cea267
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 off now@space@
46 off now
48 @pwd@>echo word@space@@space@
49 word@space@
51 @pwd@>echo word@space@@space@@space@
52 word@space@@space@
54 @pwd@>echo word@space@
55 word
57 @pwd@>echo@tab@word@space@
58 word
60 @pwd@>echo@tab@word@space@@tab@@space@
61 word@space@@tab@
63 @pwd@>echo@tab@word@tab@@space@@space@
64 word@tab@@space@
66 @pwd@>echo word@space@
67 word
69 @pwd@>echo@space@@tab@word@space@
70 @tab@word
72 @pwd@>echo@space@@space@@tab@word@space@
73 @space@@tab@word
75 @pwd@>echo@tab@@tab@word@space@
76 @tab@word
78 @pwd@>echo @tab@ on @space@@space@
79 noecho1
80 noecho2
81 echo3
82 ------------ Testing 'echo' [OFF] ------------
83 word
84 'singlequotedword'
85 "doublequotedword"
86 at-echoed-word
87 "/?"
90 word
91 .word
94 word
95 :word
96 on again
97 word@space@
98 word@space@@space@
99 word
100 word
101 word@space@@tab@
102 word@tab@@space@
103 word
104 @tab@word
105 @space@@tab@word
106 @tab@word
107 ------------ Testing mixed echo modes ------------
108 @echo on
109 if 1==1 echo foo
110 if 1==1 @echo bar
111 @echo off
112 if 1==1 echo foo2
113 if 1==1 @echo bar2
115 @todo_wine@@pwd@>if 1 == 1 echo foo@space@
118 @todo_wine@@pwd@>if 1 == 1@space@
120 foo2
121 bar2
122 ------------ Testing parameterization ------------
123 'a', 'b', 'c'
124 '"a b c"', '', ''
125 '"a b"\c', '', ''
126 'a', '~`+', '.{}!+b'
127 'a', 'b', ''
128 '"a;b"', '', ''
129 'a', 'b', ''
130 'a[b]{c}(d)e', '', ''
131 'a', '', ''
132 second line
133 'a', 'b', 'c'
134 'a', 'b', 'c'
135 'a', 'b', ''
136 ------------ Testing rem ------------
138 @pwd@>rem Hello@space@
140 @pwd@>rem Hello@space@
142 @pwd@>rem Hello || foo@space@
144 @pwd@>rem echo lol@space@
146 @pwd@>rem echo foo & echo bar@space@
148 @pwd@>rem @tab@ Hello@space@
150 @pwd@>rem@tab@ Hello@space@
152 @pwd@>rem@tab@echo foo & echo bar@space@
153 ------------ Testing redirection operators ------------
154 --- stdout redirection
156 foo@space@
157 foo@tab@
158 foo@space@
159 foo@tab@
160 foo7@space@@or_broken@foo@tab@
161 foo9@space@@or_broken@foo@tab@
162 foo1
163 foo11
164 foo12
165 foo13
166 foo14
167 foo15
168 --- stdout appending
170 foo@space@
171 foob@space@
172 foob@space@
173 fooc@space@
174 foob@space@
175 fooc@space@
176 food1
177 foob@space@
178 fooc@space@
179 food1
180 food2
181 food21
182 @todo_wine@foo7@space@@space@@or_broken@not supported@space@
183 @todo_wine@foo@or_broken@not supported
184 --- redirections within IF statements
185 @todo_wine@foo1
186 -----
187 foo2
188 foo3
189 file does not exist, ok
190 foo4
191 baz5
192 baz6@space@
193 baz7
194 baz8
196 foo@space@
202 ------------ Testing circumflex escape character ------------
203 hello, world
204 hello, world
205 hell^o, world
206 hell^o, world
207 helloworld
208 hello
209 world
210 hello
212 finished
215 foo | echo bar
216 foo & echo bar
217 bak &
218 baz@space@
219 0@or_broken@1
220 foo > foo
222 ffoof
223 WINE_FOO=bar | baz
225 WINE_FOO=bar ^| baz
226 bar | baz
228 ------------ Testing 'set' ------------
231 WINE_FOOBAR not defined
233 WINE_FOOBAR = baz
235 baz2
238 WINE_FOOBAR= bar
239 WINE_FOOBAR = baz2
240 WINE_FOOBAR = baz2
241 WINE_FOOBAR not defined
244 foobar
245 WINE_FOO not defined
246 WINE_BAZ=bazbaz
247 bazbaz
248 set "WINE_FOO=bar" should not include the quotes in the variable value
252 'foo@space@'
253 'foo@tab@'
254 'value@space@'
255 'value'
256 'jim fred'
257 '"jim" fred'
258 'jim fred'
259 'jim'
260 'apple"banana"grape'
261 ------------ Testing variable expansion ------------
262 ~p0 should be path containing batch file
263 @path@
264 @path@
265 ~dp0 should be directory containing batch file
266 @drive@@path@
267 @drive@@path@
268 CD value @pwd@@or_broken@CD value@space@
275 ERRORLEVEL
278 0ERRORLEVEL
284 ------------ Testing variable substrings ------------
288 'ty'@or_broken@''
289 't'@or_broken@''
290 ert@or_broken@qwerty
291 e@or_broken@qwerty
292 ''@or_broken@'qwerty'
293 r@or_broken@qwerty
294 ------------ Testing variable substitution ------------
295 --- in FOR variables
296 "A B"
298 "A B"
300 'A B'@or_broken@''
301 'C'@or_broken@''
302 @drive@@path@C D@or_broken@%~ff
303 @drive@@path@E@or_broken@%~ff
304 @drive@
305 @drive@
306 @path@@or_broken@%~pd
307 @path@@or_broken@%~pd
310 '.OOL'
311 '.TABC'
313 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
314 @todo_wine@'@drive@@shortpath@T'@or_broken@''
315 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
316 ''@or_broken@'%~ai'
317 ''@or_broken@'%~ai'
318 '--a------'@or_broken@'%~ai'
319 '5'@or_broken@'%~zi'
320 ''@or_broken@'%~ti'
321 ''@or_broken@'%~ti'
322 ''@or_broken@'%~zi'
323 ''@or_broken@'%~zi'
324 @drive@@path@
325 @drive@@path@
326 @drive@
327 @drive@
328 @drive@
329 @drive@
331 '.eh'
332 ',,,,,,,,,'
333 --- in parameters
334 "A B"
336 'A B'@or_broken@''
337 'C'@or_broken@''
338 @drive@@path@C D
339 @drive@@path@E
340 @drive@
341 @drive@
342 @path@
343 @path@
346 '.OOL'
347 '.TABC'
349 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
350 @todo_wine@'@drive@@shortpath@T'@or_broken@''
351 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
352 @drive@@path@
353 @drive@@path@
354 @drive@
355 @drive@
356 @drive@
357 @drive@
359 '.eh'@or_broken@''
360 ------------ Testing variable delayed expansion ------------
361 --- default mode (load-time expansion)
363 !WINE_FOO!
366 --- runtime (delayed) expansion mode
368 foo@or_broken@!WINE_FOO!
370 bar@or_broken@foo
372 0@or_broken@1
374 !WINE_FOO!
375 --- using /V cmd flag
377 foo@or_broken@!WINE_FOO!
379 !WINE_FOO!
380 ------------ Testing conditional execution ------------
381 --- unconditional ampersand
382 foo1
383 bar2@space@
384 foo2
385 foobar deleted
386 --- on success conditional and
387 @todo_wine@foo3 not created
388 bar4@space@
389 foo4
390 --- on failure conditional or
391 foo5
392 foo6@space@
393 @todo_wine@------------ Testing cd ------------
394 singleFile
395 Current dir: @drive@@path@foobar@or_broken@Current dir:@space@
396 @drive@@path@foobar
397 @pwd@
398 @drive@@path@foobar
399 @pwd@
400 @drive@@path@foobar
401 @pwd@
402 @pwd@
403 @pwd@
404 @drive@@path@foobar\bar bak
405 @drive@@path@foobar\bar bak
406 @drive@@path@foobar\bar bak
407 @drive@@path@foobar\bar bak
408 @drive@@path@foobar\bar bak
409 @pwd@
410 @drive@@path@foobar
411 ------------ Testing type ------------
413 @pwd@>type foobaz@space@
416 @pwd@>echo ---@space@
419 ---1
421 ---2
423 ---3
424 ------------ Testing NUL ------------
429 foo created
430 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
431 Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
432 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
433 Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
434 Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
435 Passed: file size check on subdir\a.a [8]@or_broken@Skipping file size check on NT4
436 ------------ Testing if/else ------------
437 --- if/else should work with blocks
438 if seems to work
439 else seems to work
440 if seems not to detect /c as parameter
441 else if seems to work
442 else if seems to work
443 else if seems to work
444 --- case sensitivity with and without /i option
445 if seems to default to case sensitivity
446 if /i seems to work
447 if /I seems to work
448 --- string comparisons
449 equal
450 non equal
451 non equal
452 equal
453 --- tabs handling
454 doom
455 doom
456 doom
458 quake
459 quake
460 quake
461 --- comparison operators
462 ------ for strings
463 LSS string can be used as operand for LSS comparison
464 floats are handled as strings
465 numbers in quotes are handled as strings
466 negative numbers as well@or_broken@NT4
467 if /i seems to work for LSS
468 A LSS B
469 A LSS AB
470 A LSS BA
471 A LSS AA
472 B LSS BA
473 AB LSS B
474 AB LSS BA
475 AA LSS B
476 AA LSS AB
477 AA LSS BA
478 b LSS B@or_broken@NT4
479 a LSS B@or_broken@NT4
480 a LSS B insensitive
481 A LSS b
482 A LSS b insensitive
483 A LEQ A
484 A LEQ B
485 A LEQ AB
486 A LEQ BA
487 A LEQ AA
488 B LEQ B
489 B LEQ BA
490 AB LEQ B
491 AB LEQ AB
492 AB LEQ BA
493 BA LEQ BA
494 AA LEQ B
495 AA LEQ AB
496 AA LEQ BA
497 AA LEQ AA
498 b LEQ B@or_broken@NT4
499 b LEQ B insensitive
500 a LEQ B@or_broken@NT4
501 a LEQ B insensitive
502 A LEQ b
503 A LEQ b insensitive
504 A EQU A
505 B EQU B
506 AB EQU AB
507 BA EQU BA
508 AA EQU AA
509 A EQU a insensitive
510 A NEQ B
511 A NEQ AB
512 A NEQ BA
513 A NEQ AA
514 B NEQ A
515 B NEQ AB
516 B NEQ BA
517 B NEQ AA
518 AB NEQ A
519 AB NEQ B
520 AB NEQ BA
521 AB NEQ AA
522 BA NEQ A
523 BA NEQ B
524 BA NEQ AB
525 BA NEQ AA
526 AA NEQ A
527 AA NEQ B
528 AA NEQ AB
529 AA NEQ BA
530 A GEQ A
531 B GEQ A
532 B GEQ B
533 B GEQ AB
534 B GEQ AA
535 AB GEQ A
536 AB GEQ AB
537 AB GEQ AA
538 BA GEQ A
539 BA GEQ B
540 BA GEQ AB
541 BA GEQ BA
542 BA GEQ AA
543 AA GEQ A
544 AA GEQ AA
545 B GTR A
546 B GTR AB
547 B GTR AA
548 AB GTR A
549 AB GTR AA
550 BA GTR A
551 BA GTR B
552 BA GTR AB
553 BA GTR AA
554 AA GTR A
555 ------ for numbers
556 negative numbers handled
557 negative numbers handled
558 octal handled
559 also in negative form
560 hexa handled
561 also in negative form
562 11 LSS 101
563 0 LSS 1
564 0 LSS 10
565 0 LSS 9
566 1 LSS 10
567 1 LSS 9
568 9 LSS 10
569 0 LEQ 0
570 0 LEQ 1
571 0 LEQ 10
572 0 LEQ 9
573 1 LEQ 1
574 1 LEQ 10
575 1 LEQ 9
576 10 LEQ 10
577 9 LEQ 10
578 9 LEQ 9
579 0 EQU 0
580 1 EQU 1
581 10 EQU 10
582 9 EQU 9
583 octal ok
584 hexa ok
585 string/hexa compare ok
586 string/hexa compare ok
587 0 NEQ 1
588 0 NEQ 10
589 0 NEQ 9
590 1 NEQ 0
591 1 NEQ 10
592 1 NEQ 9
593 10 NEQ 0
594 10 NEQ 1
595 10 NEQ 9
596 9 NEQ 0
597 9 NEQ 1
598 9 NEQ 10
599 0 GEQ 0
600 1 GEQ 0
601 1 GEQ 1
602 10 GEQ 0
603 10 GEQ 1
604 10 GEQ 10
605 10 GEQ 9
606 9 GEQ 0
607 9 GEQ 1
608 9 GEQ 9
609 1 GTR 0
610 10 GTR 0
611 10 GTR 1
612 10 GTR 9
613 9 GTR 0
614 9 GTR 1
615 ------ for numbers and stringified numbers
616 strings and integers not equal
617 strings and integers not equal
619 "10" GEQ "1"
620 '1' GEQ 1@or_broken@NT4
621 1 GEQ "1"
622 "1" GEQ "1"
623 '1' GEQ "1"
624 "10" GEQ "1"
625 non NT4@or_broken@1 GEQ '1'
626 '1' GEQ '1'
628 1 GEQ "10"
630 '1' GEQ "10"
631 "10" GEQ "10"
632 ------------ Testing for ------------
633 --- plain FOR
661 `echo
664 'echo
667 "echo A B"
668 "A B"
670 --- imbricated FORs
681 --- basic wildcards
682 bazbaz
683 --- for /d
684 baz@space@
685 foo@space@
686 bar@space@
687 PASSED
688 xxx - Should be xxx
689 Expected second line
690 --- for /R
691 Plain directory enumeration
692 Plain directory enumeration from provided root
693 File enumeration
694 File enumeration from provided root
695 Mixed enumeration
696 Mixed enumeration from provided root
697 With duplicates enumeration
698 Strip missing wildcards, keep unwildcarded names
699 for /R passed
700 --- Complex wildcards unix and windows slash
701 Windows slashs, valid path
702 ASIS: foobar\baz\bazbaz
703 WC : foobar\baz\bazbaz
704 Windows slashs, invalid path
705 ASIS: foobar\jim\bazbaz
706 Unix slashs, valid path
707 ASIS: foobar/baz/bazbaz
708 WC : bazbaz
709 Unix slashs, invalid path
710 ASIS: foobar/jim/bazbaz
711 Done
712 --- for /L
723 ErrorLevel 0
724 ErrorLevel 0
744 --- set /a
745 ------ individual operations
746 WINE_foo correctly 3
747 WINE_foo correctly -1
748 WINE_foo correctly 3
749 WINE_foo correctly 6
750 WINE_foo correctly 10
751 WINE_foo correctly 4
752 WINE_foo correctly 4
753 WINE_foo correctly -4
754 WINE_foo correctly 0
755 WINE_foo correctly 2
756 WINE_foo correctly 2
757 WINE_foo correctly -2
758 WINE_foo correctly 1
759 WINE_foo correctly 4
760 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1073741824 [0]
761 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1073741824 [0]
762 WINE_foo correctly -4
763 WINE_foo correctly 9
764 WINE_foo correctly 2
765 WINE_foo correctly 0
766 WINE_foo correctly -1
767 WINE_foo correctly -3
768 WINE_foo correctly 0
769 WINE_foo correctly 1
770 WINE_foo correctly 1
771 WINE_foo correctly 4
772 WINE_foo correctly 1
773 WINE_foo correctly 5
774 WINE_foo correctly 5
775 WINE_foo correctly 7
776 WINE_foo correctly 5
777 WINE_foo correctly 5
778 WINE_foo correctly 5
779 WINE_foo correctly 4
780 WINE_foo correctly 6
781 WINE_foo correctly 1
782 WINE_foo correctly 4
783 ------ precedence and grouping
784 WINE_foo correctly 10
785 WINE_foo correctly 18@or_broken@ERROR: WINE_foo incorrectly [18]
786 WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly 0 [2]
787 WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly [2]
788 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 4 [0]
789 WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly [4]
790 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
791 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
792 ------ octal and hexadecimal
793 WINE_foo correctly 18
794 WINE_foo correctly 18
795 WINE_foo correctly 15
796 WINE_foo correctly 3
797 ------ variables
798 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
799 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
800 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
801 WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly [4]
802 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
803 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
804 WINE_baz correctly 4@or_broken@ERROR: WINE_baz incorrectly [4]
805 WINE_foo correctly 9@or_broken@ERROR: WINE_foo incorrectly 3 [9]
806 WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly 3 [9]
807 WINE_foo correctly 0
808 WINE_foo correctly 4
809 WINE_bar correctly 4
810 WINE_foo correctly -7@or_broken@ERROR: WINE_foo incorrectly 4 [-7]
811 WINE_bar correctly -7@or_broken@ERROR: WINE_bar incorrectly 4 [-7]
812 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly -7 [-1]
813 WINE_bar correctly -1@or_broken@ERROR: WINE_bar incorrectly -7 [-1]
814 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
815 WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly [1]
816 WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly 1 [4]
817 WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly 1 [4]
818 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 4 [1]
819 WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly 4 [1]
820 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1 [0]
821 WINE_bar correctly 0@or_broken@ERROR: WINE_bar incorrectly 1 [0]
822 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
823 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
824 WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
825 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
826 WINE_foo correctly 19@or_broken@ERROR: WINE_foo incorrectly 0 [19]
827 WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
828 WINE_baz correctly 4
829 --- quotes
830 WINE_foo correctly 1
831 WINE_foo correctly 1
832 WINE_foo correctly 1
833 WINE_bar correctly 2
834 WINE_foo correctly 1
835 WINE_bar correctly 2
836 WINE_foo correctly 1
837 WINE_bar correctly 2
838 WINE_foo correctly 1
839 WINE_bar correctly 2
840 WINE_foo correctly 1
841 WINE_bar correctly 2
842 WINE_baz correctly 3
843 WINE_foo correctly 1
844 WINE_bar correctly 2
845 WINE_baz correctly 3
846 WINE_foo correctly 1
847 WINE_bar correctly 2
848 WINE_baz correctly 3
849 WINE_foo correctly 1
850 WINE_bar correctly 2
851 WINE_baz correctly 3
852 WINE_foo correctly 1
853 WINE_bar correctly 2
854 WINE_baz correctly 3
855 WINE_foo correctly 1
856 WINE_foo correctly 1
857 WINE_bar correctly 5
858 WINE_baz correctly 2
859 WINE_foo correctly 18
860 WINE_foo correctly 3
861 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 4 [7]
862 --- whitespace are ignored between double char operators
863 WINE_foo correctly 10@or_broken@ERROR: WINE_foo incorrectly 4 [10]
864 WINE_bar correctly 50@or_broken@ERROR: WINE_bar incorrectly 5 [50]
865 WINE_foo correctly 772@or_broken@ERROR: WINE_foo incorrectly 4 [772]
866 WINE_bar correctly 7720@or_broken@ERROR: WINE_bar incorrectly 5 [7720]
867 --- invalid operator sequence
870 ----- negative prefix
871 WINE_foo correctly -1
872 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
873 WINE_foo correctly 6
874 WINE_foo correctly 0
875 WINE_foo correctly 6
876 WINE_foo correctly 2
877 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
878 WINE_foo correctly 5
879 WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly -5 [3]
880 ----- assignment tests involving the end destination
881 WINE_foo correctly 11@or_broken@ERROR: WINE_foo incorrectly 3 [11]
882 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
883 WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly [9]
884 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
885 WINE_bar correctly 10@or_broken@ERROR: WINE_bar incorrectly [10]
886 WINE_baz correctly 7@or_broken@ERROR: WINE_baz incorrectly [7]
887 WINE_foo correctly 7@or_broken@ERROR: WINE_foo incorrectly 2 [7]
888 WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 2 [7]
889 ----- equal precedence on stack
890 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
891 WINE_foo correctly 0
892 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
893 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
894 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
895 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
896 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
897 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
898 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
899 WINE_foo correctly -1
900 WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1 [0]
901 WINE_foo correctly 0
902 WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
903 WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly 0 [-1]
904 WINE_foo correctly 25@or_broken@ERROR: WINE_foo incorrectly 20 [25]
905 WINE_foo correctly 20
906 WINE_foo correctly 1
907 WINE_foo correctly 4
908 WINE_foo correctly 7
909 WINE_foo correctly 8@or_broken@ERROR: WINE_foo incorrectly 4 [8]
910 WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 5 [6]
911 WINE_bar correctly 6@or_broken@ERROR: WINE_bar incorrectly 5 [6]
912 --- for /F
913 ------ string argument
915 a@or_broken@no output
917 a@or_broken@no output
919 a@or_broken@no output
921 a@or_broken@no output
923 a@or_broken@no output
924 ------ fileset argument
925 --------- basic blank handling
932 --------- multi-line with empty lines
936 --------- multiple files
947 ------ command argument
948 Passed1@or_broken@Missing functionality - Broken1
949 Passed2@or_broken@Missing functionality - Broken2
950 Passed3@or_broken@Missing functionality - Broken3
951 ------ eol option
952 and@or_broken@Broken NT4 functionality1
953 Line@or_broken@Broken NT4 functionality2
954 Line@or_broken@Broken NT4 functionality3
958 no output
959 no output
960 ------ delims option
962 a@space@
966 foo bar baz
967 @todo_wine@c:\
968 ------ skip option
970 no output
971 no output
974 no output
975 ------ tokens= option
976 h=%h i=a j=%j k=%k l=%l m=%m o=%o
977 h=%h i=b j=%j k=%k l=%l m=%m o=%o
978 h=%h i=a j=c k=e l=f m=g o=%o
979 h=%h i=a j=e k=f g l=%l m=%m o=%o
980 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
981 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
982 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
983 h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
984 h=%h i=a j=b k= l= m=%m n=%n o=%o
985 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
986 h=%h i=a j=b k= l= m= n=%n o=%o
987 h=%h i=a j=b k= l= m= n= o=%o
988 u=a v=b w=c x=d y=e z=f A=%A a=%a
989 @todo_wine@U=a V=b W=c X=d Y=e Z=f A=%A a=m
990 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
991 h=%h i=e j=%j k=%k l=%l m=%m o=%o
992 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
993 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
994 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
995 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
996 ------------ Testing del /a ------------
997 not-r.test not found after delete, good
998 r.test found before delete, good
999 r.test not found after delete, good
1000 ------------ Testing del /q ------------
1001 del /q * succeeded on file1
1002 del /q * succeeded on file2.dat
1003 ------------ Testing del /s ------------
1004 ------------ Testing rename ------------
1005 --- ren and rename are synonymous
1006 foo renamed to bar
1007 bar renamed to foo
1008 --- name collision
1011 --- rename read-only files
1012 read-only file renamed
1013 --- rename directories
1014 dir renamed
1015 read-only dir renamed
1016 --- rename in other directory
1017 rename impossible in other directory
1018 original file still present
1019 ------------ Testing move ------------
1020 --- file move
1021 file move succeeded
1022 @todo_wine@file move with overwrite succeeded@or_broken@file overwrite impossible!
1023 @todo_wine@bar@or_broken@baz
1024 read-only files are moveable
1025 file moved in subdirectory
1026 @todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
1027 @todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1
1028 --- directory move
1029 simple directory move succeeded
1030 moving a directory to itself gives error; errlevel 1
1031 ------ dir in dir move
1033 bar2
1034 foo2
1035 ------------ Testing mkdir ------------
1036 --- md and mkdir are synonymous
1039 --- creating an already existing directory/file must fail
1042 --- multilevel path creation
1051 --- trailing backslashes
1053 dir created
1055 --- invalid chars
1056 mkdir ? gives errorlevel 1
1057 mkdir ?\foo gives errorlevel 1
1058 mkdir foo\? gives errorlevel 1
1059 ok, foo created
1060 mkdir foo\bar\? gives errorlevel 1
1061 ok, foo\bar created
1062 --- multiple directories at once
1063 foo created
1064 bar created
1065 foobar created
1066 bar\baz created
1067 bazbaz created
1068 zabzab created
1069 mkdir foo\* errorlevel 1
1070 ok, foo created
1071 ------------ Testing rmdir ------------
1073 dir removed
1075 dir removed
1078 file not removed
1080 non-empty dir not removed
1082 non-empty dir not removed
1083 recursive rmdir succeeded
1084 recursive rmdir succeeded
1085 foo removed
1086 bar removed
1087 foobar removed
1088 bar\baz removed
1089 ------------ Testing pushd/popd ------------
1090 @pwd@
1091 --- popd is no-op when dir stack is empty
1092 @pwd@
1093 --- pushing non-existing dir
1094 @pwd@
1095 --- basic behaviour
1096 @drive@@path@foobar
1097 @pwd@
1098 @drive@@path@foobar\baz
1099 @drive@@path@foobar
1100 @drive@@path@foobar
1101 @pwd@
1102 @drive@@path@foobar
1103 @pwd@
1104 ------------ Testing attrib ------------
1105 A @drive@@path@foobar\foo@or_broken@A @drive@@path@foobar\foo@or_broken@A I @drive@@path@foobar\foo
1106 --- read-only attribute
1107 A R @drive@@path@foobar\foo@or_broken@A R @drive@@path@foobar\foo@or_broken@A R I @drive@@path@foobar\foo
1109 foo original contents
1110 Read-only file not deleted
1111 Read-only file forcibly deleted
1112 --- recursive behaviour
1113 A @drive@@path@foobar\baz\level2@or_broken@A @drive@@path@foobar\baz\level2@or_broken@A I @drive@@path@foobar\baz\level2
1114 A R @drive@@path@foobar\level1@or_broken@A R @drive@@path@foobar\level1@or_broken@A R I @drive@@path@foobar\level1
1115 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
1116 A @drive@@path@foobar\bar@or_broken@A @drive@@path@foobar\bar@or_broken@A I @drive@@path@foobar\bar
1117 --- folders processing
1118 @drive@@path@foobar@or_broken@ @drive@@path@foobar@or_broken@ I @drive@@path@foobar
1119 @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
1120 A @drive@@path@foobar\baz\toto@or_broken@A @drive@@path@foobar\baz\toto@or_broken@A I @drive@@path@foobar\baz\toto
1121 toto
1122 lulu
1123 file created in read-only dir
1124 ------------ Testing assoc ------------
1125 --- setting association
1127 .foo=bar
1128 .foo=bar
1130 .foo=bar
1131 --- resetting association
1135 ------------ Testing ftype ------------
1136 --- setting association
1138 footype=foo_opencmd
1139 .foo=footype
1140 footype=foo_opencmd
1142 footype=foo_opencmd
1143 --- resetting association
1144 @todo_wine@original value@or_broken@buggyXP@or_broken@!WINE_FOO!
1145 ------------ Testing CALL ------------
1146 --- external script
1147 foo@space@
1148 foo 8
1149 foo@space@@space@
1150 foo bar@space@
1151 foo ""@space@
1152 "" bar@space@
1153 foo ''@space@
1154 '' bar@space@
1155 --- internal routines
1156 bar :testRoutine
1157 foo@space@
1158 foo bar
1159 foo ""
1160 "" bar
1161 foo ''
1162 '' bar
1163 --- with builtins
1165 foo created
1166 Should expand foobaz
1167 batfile
1168 robinfile
1171 non-builtin dir
1172 Line one
1173 Line two
1174 Get if
1175 ... and else!
1176 passed
1177 ------------ Testing SHIFT ------------
1178 'p1' 'p2' 'p3' 'p4' 'p5'
1179 'p2' 'p3' 'p4' 'p5' ''
1180 'p3' 'p4' 'p5' '' ''
1181 'p3' 'p5' '' '' ''
1182 'p3' 'p5' '' '' ''
1183 'p5' '' '' '' ''
1184 ------------ Testing cmd invocation ------------
1185 --- a batch file can delete itself
1186 file correctly deleted
1187 --- a batch file can alter itself
1188 @todo_wine@bar
1189 ---------- Testing copy
1190 Passed: Found expected dummy.file
1191 Passed: Found expected dir1\file1
1192 Passed: Found expected dir1\file1
1193 Passed: Found expected dir1\file99
1194 Passed: Found expected file1
1195 Passed: Did not find dir2
1196 Passed: Did not find dir2\file1
1197 Passed: Found expected dir1\file1
1198 Passed: Found expected dir1\file2
1199 Passed: Found expected dir1\file3
1200 Passed: Found expected dir1\file1
1201 Passed: Found expected dir1\file2
1202 Passed: Found expected dir1\file3
1203 Passed: Found expected file1
1204 Passed: Found expected file2
1205 Passed: Found expected file3
1206 Passed: Did not find dir2
1207 Passed: Did not find dir2\file1
1208 Passed: Did not find dir2\file2
1209 Passed: Did not find dir2\file3
1210 Passed: Found expected testfile
1211 Passed: Found expected testfile
1212 Passed: Found expected testfile
1213 Passed: Found expected testfile
1214 Passed: Found expected testfile
1215 Passed: Found expected dir1\fred
1216 Passed: Found expected dir1\fred
1217 Passed: Found expected fred
1218 Passed: Found expected fred
1219 Passed: file size check on file1 [5]@or_broken@Skipping file size check on NT4
1220 Passed: file size check on file2 [8]@or_broken@Skipping file size check on NT4
1221 Passed: file size check on file3 [11]@or_broken@Skipping file size check on NT4
1222 Passed: file size check on file1_default [5]@or_broken@Skipping file size check on NT4
1223 Passed: file size check on file1_default2 [5]@or_broken@Skipping file size check on NT4
1224 Passed: file size check on file1_plus_eof [6]@or_broken@Skipping file size check on NT4
1225 Passed: file size check on file2_plus_eof [9]@or_broken@Skipping file size check on NT4
1226 Passed: file size check on file3_plus_eof [12]@or_broken@Skipping file size check on NT4
1227 Passed: file size check on file12_plus_eof [14]@or_broken@Skipping file size check on NT4
1228 Passed: file size check on file12_no_eof [13]@or_broken@Skipping file size check on NT4
1229 Passed: file size check on file12_eof2 [14]@or_broken@Skipping file size check on NT4
1230 Passed: file size check on file1_binary_srccopy [6]@or_broken@Skipping file size check on NT4
1231 Passed: file size check on file1_ascii_srccopy [5]@or_broken@Skipping file size check on NT4
1232 Passed: file size check on file123_default_copy [25]@or_broken@Skipping file size check on NT4
1233 Passed: file size check on file123_ascii_copy [25]@or_broken@Skipping file size check on NT4
1234 Passed: file size check on file123_binary_copy [27]@or_broken@Skipping file size check on NT4
1235 Passed: file size check on file123_mixed_copy1 [26]@or_broken@Skipping file size check on NT4
1236 Passed: file size check on file123_mixed_copy2 [27]@or_broken@Skipping file size check on NT4
1237 Passed: file size check on file123_mixed_copy3 [26]@or_broken@Skipping file size check on NT4
1238 Passed: file size check on file123_mixed_copy4 [25]@or_broken@Skipping file size check on NT4
1239 Passed: file size check on file123_mixed_copy5 [28]@or_broken@Skipping file size check on NT4
1240 Passed: file size check on file123_mixed_copy6 [19]@or_broken@Skipping file size check on NT4
1241 Passed: file size check on file123_mixed_copy7 [6]@or_broken@Skipping file size check on NT4
1242 Passed: file size check on file123_mixed_copy8 [7]@or_broken@Skipping file size check on NT4
1243 Passed: errorlevel invalid check 1
1244 Passed: Did not find dir1\file1
1245 Passed: errorlevel invalid check 2
1246 Passed: errorlevel invalid check 3
1247 ------------ Testing setlocal/endlocal ------------
1248 --- enable/disable extensions
1249 @todo_wine@ErrLev:@space@
1250 ErrLev: 0
1251 ErrLev: 0
1252 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
1253 ErrLev: 0
1254 --- setlocal with corresponding endlocal
1255 globalval
1256 localval
1257 @drive@@path@foobar\foobar2
1258 globalval
1259 @drive@@path@foobar
1260 globalval
1261 @drive@@path@foobar
1262 --- setlocal with no corresponding endlocal
1263 globalval
1264 localval
1265 @drive@@path@foobar\foobar2
1266 globalval
1267 @drive@@path@foobar
1268 --- setlocal within same batch program
1269 Var1 ok 1
1270 Var2 ok 2
1271 Var3 ok 3
1272 Directory is ok 1
1273 Var1 ok 1
1274 Var2 ok 2
1275 Var3 ok 3
1276 Directory is ok 2
1277 Var1 ok 1
1278 Var2 ok 2
1279 Var3 ok 3
1280 Directory is ok 3
1281 --- Mismatched set and end locals
1282 --- Extra setlocal in called batch
1283 value2
1284 2set1endvalue1
1285 @drive@@path@foobar\foodir3
1286 Finished:
1287 value2
1288 @drive@@path@foobar\foodir2
1289 value1
1290 @drive@@path@foobar
1291 --- Extra endlocal in called batch
1292 value2
1293 value2
1294 @drive@@path@foobar\foodir2
1295 value2
1296 @drive@@path@foobar\foodir2
1297 Finished:
1298 value2
1299 @drive@@path@foobar\foodir2
1300 value1
1301 @drive@@path@foobar
1302 --- endlocal in called function rather than batch pgm is ineffective
1311 ------------ Testing Errorlevel ------------
1312 9009
1314 errorlevel just right, good
1315 errorlevel with leading zero just right, good
1316 errorlevel with negative number OK
1317 abc0def@or_broken@abc1def
1318 errorlevel zero, good@or_broken@errorlevel nonzero, bad
1319 7 should be 7
1320 7 should still be 7
1321 ------------ Testing GOTO ------------
1322 goto with no leading space worked
1323 goto with colon and no leading space worked
1324 goto with a leading space worked
1325 goto with a leading tab worked
1326 goto with a following space worked
1327 goto with following amphersands worked
1328 goto with redirections worked
1329 Ignoring double colons worked
1330 label with mixed whitespace and no echo worked
1331 Correctly ignored trailing information
1332 ------------ Testing PATH ------------
1333 PATH=original
1334 PATH=try2
1335 PATH=try3
1336 ------------ Testing combined CALLs/GOTOs ------------
1337 world
1338 cheball
1339 barbare
1343 cheball
1344 barbare