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] ------------
11 @pwd@
>echo
'singlequotedword'@space@
14 @pwd@
>echo
"doublequotedword"@space@
18 @pwd@
>echo
"/?"@space@
30 @pwd@
>echo .word@space@
42 @pwd@
>echo
:word@space@
45 @pwd@
>echo
off now@space@
48 @pwd@
>echo word@space@@space@
51 @pwd@
>echo word@space@@space@@space@
54 @todo_wine@@pwd@
>echo word@space@
57 @pwd@
>echo@tab@word@space@
60 @pwd@
>echo@tab@word@space@@tab@@space@
63 @pwd@
>echo@tab@word@tab@@space@@space@
66 @todo_wine@@pwd@
>echo word@space@
69 @pwd@
>echo@space@@tab@word@space@
72 @pwd@
>echo@space@@space@@tab@word@space@
75 @pwd@
>echo@tab@@tab@word@space@
78 @pwd@
>echo @tab@
on @space@@space@
79 ------------ Testing
'echo' [OFF] ------------
104 ------------ Testing mixed echo modes
------------
112 @todo_wine@@pwd@
>if 1 == 1 echo foo@space@
115 @todo_wine@@pwd@
>if 1 == 1@space@
119 ------------ Testing
rem ------------
121 @pwd@
>rem Hello@space@
123 @pwd@
>rem Hello@space@
125 @pwd@
>rem Hello || foo@space@
127 @pwd@
>rem echo lol@space@
129 @pwd@
>rem echo foo
& echo bar@space@
131 @pwd@
>rem @tab@ Hello@space@
133 @pwd@
>rem@tab@ Hello@space@
135 @pwd@
>rem@tab@echo foo
& echo bar@space@
136 ------------ Testing redirection operators
------------
137 --- stdout redirection
143 foo7@space@@or_broken@foo@tab@
144 foo9@space@@or_broken@foo@tab@
162 @todo_wine@foo7@space@@space@@or_broken@not supported@space@
163 @todo_wine@foo@or_broken@not supported
164 --- redirections within
IF statements
169 file does not exist
, ok
182 ------------ Testing circumflex escape character
------------
183 @todo_wine@hello
, world
184 @todo_wine@hello
, world
185 @todo_wine@hell^o
, world
186 @todo_wine@hell^o
, world
189 @todo_wine@foo | echo bar
190 @todo_wine@foo
& echo bar
197 @todo_wine@FOO
=bar | baz
199 @todo_wine@FOO
=bar ^| baz
202 ------------ Testing
'set' ------------
212 @todo_wine@FOOBAR
= bar
213 @todo_wine@FOOBAR
= baz2
222 set "FOO=bar" should not include the quotes in the variable value
228 ------------ Testing
variable expansion
------------
229 ~dp0 should be directory containing batch file
232 CD value @pwd@@or_broken@CD value@space@
248 ------------ Testing
variable substrings
------------
252 @todo_wine@
'ty'@or_broken@
''
256 ''@or_broken@
'qwerty'
258 ------------ Testing
variable substitution
------------
264 @pwd@\C D@or_broken@
%~ff
265 @pwd@\E@or_broken@
%~ff
268 @path@@or_broken@
%~pd
269 @path@@or_broken@
%~pd
275 @todo_wine@
'@drive@@shortpath@R S'@or_broken@
''
276 @todo_wine@
'@drive@@shortpath@T'@or_broken@
''
277 @todo_wine@
'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@
''
278 @todo_wine@
''@or_broken@
'%~ai'
279 @todo_wine@
''@or_broken@
'%~ai'
280 @todo_wine@
'--a------'@or_broken@
'%~ai'
281 @todo_wine@
''@or_broken@
'%~ti'
282 @todo_wine@
''@or_broken@
'%~ti'
283 @todo_wine@
''@or_broken@
'%~zi'
284 @todo_wine@
''@or_broken@
'%~zi'
296 @todo_wine@
'A B'@or_broken@
''
309 @todo_wine@
'@drive@@shortpath@R S'@or_broken@
''
310 @todo_wine@
'@drive@@shortpath@T'@or_broken@
''
311 @todo_wine@
'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@
''
320 ------------ Testing
variable delayed expansion
------------
321 --- default
mode (load-time expansion
)
326 --- runtime
(delayed
) expansion
mode
328 @todo_wine@foo@or_broken@
!FOO
!
330 @todo_wine@bar@or_broken@foo
335 --- using
/V cmd flag
337 @todo_wine@foo@or_broken@
!FOO
!
340 ------------ Testing conditional execution
------------
341 --- unconditional ampersand
346 --- on success conditional and
347 @todo_wine@foo3 not created
350 --- on failure conditional or
353 @todo_wine@
------------ Testing cd
------------
355 Current
dir: @pwd@
\foobar@or_broken@Current
dir:@space@
369 ------------ Testing type
------------
371 @pwd@
>type foobaz@space@
374 @pwd@
>echo
---@space@
378 ------------ Testing NUL
------------
383 @todo_wine@foo created
384 ------------ Testing
if/else ------------
385 if/else should work with blocks
388 if seems not to detect
/c as parameter
389 Testing case sensitivity with and without
/i option
390 if seems to default to case sensitivity
393 Testing string comparisons
398 Testing tabs handling
406 ------------ Testing
for ------------
441 @todo_wine@
"echo A B"
497 ------ individual operations
513 0@or_broken@
1073741824
514 0@or_broken@
-1073741824
535 ------ precedence and grouping
538 @todo_wine@
18@or_broken@
10
539 @todo_wine@
2@or_broken@
0
540 @todo_wine@
2@or_broken@
0
543 @todo_wine@
3@or_broken@
4
544 ------ octal and hexadecimal
545 @todo_wine@
3@or_broken@
4
551 @todo_wine@
3@or_broken@foo not defined
552 @todo_wine@
3@or_broken@
0
553 @todo_wine@
3@or_broken@
0
554 @todo_wine@
3@or_broken@
0
555 @todo_wine@
9@or_broken@
0
557 @todo_wine@
4@or_broken@
0
558 @todo_wine@
-7@or_broken@
0
559 @todo_wine@
-1@or_broken@
0
560 @todo_wine@
5@or_broken@
0
561 @todo_wine@
4@or_broken@
0
562 @todo_wine@
1@or_broken@
0
564 @todo_wine@
5@or_broken@
0
567 ------ string
argument
573 ------ fileset argument
574 --------- basic
blank handling
581 --------- multi
-line with empty lines
585 --------- multiple files
608 @todo_wine@foo bar baz
614 ------------ Testing del
/a
------------
615 not
-r.test not found after
delete, good
616 r.test found before
delete, good
617 r.test not found after
delete, good
618 ------------ Testing del
/q
------------
619 del
/q
* succeeded
on file1
620 del
/q
* succeeded
on file2.dat
621 ------------ Testing del
/s
------------
622 ------------ Testing
rename ------------
623 --- ren and
rename are synonymous
629 --- rename read
-only files
630 read
-only file renamed
631 --- rename directories
633 read
-only
dir renamed
634 --- rename in other directory
635 rename impossible in other directory
636 original file still present
637 ------------ Testing
move ------------
640 @todo_wine@file
move with overwrite succeeded@or_broken@file overwrite impossible
!
641 @todo_wine@bar@or_broken@baz
642 read
-only files are moveable
643 file moved in subdirectory
644 @todo_wine@moving a file to itself is a no
-op@or_broken@moving a file to itself should be a no
-op
!
645 @todo_wine@ErrorLevel
: 0@or_broken@ErrorLevel
: 1
647 simple directory
move succeeded
648 moving a directory to itself gives error
; errlevel
1
649 ------ dir in
dir move
653 ------------ Testing
mkdir ------------
654 --- md and
mkdir are synonymous
657 --- creating an already existing directory
/file must fail
660 --- multilevel path creation
669 --- trailing backslashes
674 mkdir ? gives errorlevel
1
675 mkdir ?
\foo gives errorlevel
1
676 mkdir foo
\? gives errorlevel
1
678 mkdir foo
\bar
\? gives errorlevel
1
680 --- multiple directories at once
685 mkdir foo\
* errorlevel
1
687 ------------ Testing
rmdir ------------
696 non
-empty
dir not removed
698 non
-empty
dir not removed
699 recursive rmdir succeeded
700 recursive rmdir succeeded
705 ------------ Testing pushd
/popd
------------
707 --- popd is no
-op when
dir stack is empty
709 --- pushing non
-existing
dir
720 ------------ Testing attrib
------------
721 A @pwd@
\foobar
\foo@or_broken@A @pwd@
\foobar
\foo@or_broken@A I @pwd@
\foobar
\foo
722 --- read
-only attribute
723 A R @pwd@
\foobar
\foo@or_broken@A R @pwd@
\foobar
\foo@or_broken@A R I @pwd@
\foobar
\foo
725 foo original contents
726 Read
-only file not deleted
727 Read
-only file forcibly deleted
728 --- recursive behaviour
729 @todo_wine@A @pwd@
\foobar
\baz\level2@or_broken@A @pwd@
\foobar
\baz\level2@or_broken@A I @pwd@
\foobar
\baz\level2
730 @todo_wine@A R @pwd@
\foobar\level1@or_broken@A R @pwd@
\foobar\level1@or_broken@A R I @pwd@
\foobar\level1
731 @todo_wine@A R @pwd@
\foobar
\baz\level2@or_broken@A R @pwd@
\foobar
\baz\level2@or_broken@A R I @pwd@
\foobar
\baz\level2
732 A @pwd@
\foobar
\bar@or_broken@A @pwd@
\foobar
\bar@or_broken@A I @pwd@
\foobar
\bar
733 --- folders processing
734 @pwd@
\foobar@or_broken@ @pwd@
\foobar@or_broken@ I @pwd@
\foobar
735 @todo_wine@ R @pwd@
\foobar
\baz@or_broken@ R @pwd@
\foobar
\baz@or_broken@ @pwd@
\foobar
\baz@or_broken@ R I @pwd@
\foobar
\baz
736 @todo_wine@A @pwd@
\foobar
\baz
\toto@or_broken@A @pwd@
\foobar
\baz
\toto@or_broken@A I @pwd@
\foobar
\baz
\toto
739 file created in read
-only
dir
740 ------------ Testing assoc
------------
741 --- setting association
747 --- resetting association
751 ------------ Testing ftype
------------
752 --- setting association
759 --- resetting association
760 @todo_wine@original value@or_broken@buggyXP@or_broken@
!FOO
!
761 ------------ Testing
CALL ------------
767 @todo_wine@foo
""@space@
768 @todo_wine@
"" bar@space@
771 --- internal routines
781 @todo_wine@foo created
782 @todo_wine@Should expand foobaz
788 ------------ Testing SHIFT
------------
789 'p1' 'p2' 'p3' 'p4' 'p5'
790 'p2' 'p3' 'p4' 'p5' ''
795 ------------ Testing cmd invocation
------------
796 --- a batch file can
delete itself
797 file correctly deleted
798 --- a batch file can alter itself
800 ------------ Testing setlocal
/endlocal
------------
801 --- enable
/disable extensions
802 @todo_wine@ErrLev
:@space@
805 @todo_wine@ErrLev
:@space@@or_broken@ErrLev
: 0
807 --- setlocal with corresponding endlocal
812 --- setlocal with no corresponding endlocal
816 ------------ Testing Errorlevel
------------
819 errorlevel just right
, good
820 errorlevel with leading zero just right
, good
821 errorlevel with negative number OK
822 abc0def@or_broken@abc1def
823 errorlevel zero
, good@or_broken@errorlevel nonzero
, bad
826 ------------ Testing
GOTO ------------
827 goto with no leading space worked
828 goto with a leading space worked
829 goto with a leading tab worked
830 goto with a following space worked
831 ------------ Testing PATH
------------
835 ------------ Testing combined CALLs
/GOTOs
------------