
@pwd@>echo Tests for cmd's builtin commands@space@
Tests for cmd's builtin commands

@pwd@>echo ------------ Testing 'echo' [ON] ------------@space@
------------ Testing 'echo' [ON] ------------

@pwd@>echo word@space@
word

@pwd@>echo 'singlequotedword'@space@
'singlequotedword'

@pwd@>echo "doublequotedword"@space@
"doublequotedword"
at-echoed-word

@pwd@>echo "/?"@space@
"/?"

@pwd@>echo.


@pwd@>echo .@space@
.

@pwd@>echo.word
word

@pwd@>echo .word@space@
.word

@pwd@>echo:


@pwd@>echo :@space@
:

@pwd@>echo:word
word

@pwd@>echo :word@space@
:word

@pwd@>echo off now@space@
off now

@pwd@>echo word@space@@space@
word@space@

@pwd@>echo word@space@@space@@space@
word@space@@space@

@todo_wine@@pwd@>echo word@space@
word

@pwd@>echo@tab@word@space@
word

@pwd@>echo@tab@word@space@@tab@@space@
word@space@@tab@

@pwd@>echo@tab@word@tab@@space@@space@
word@tab@@space@

@todo_wine@@pwd@>echo word@space@
word

@pwd@>echo@space@@tab@word@space@
@tab@word

@pwd@>echo@space@@space@@tab@word@space@
@space@@tab@word

@pwd@>echo@tab@@tab@word@space@
@tab@word

@pwd@>echo @tab@ on @space@@space@
------------ Testing 'echo' [OFF] ------------
word
'singlequotedword'
"doublequotedword"
at-echoed-word
"/?"

.
word
.word

:
word
:word
on again
word@space@
word@space@@space@
word
word
word@space@@tab@
word@tab@@space@
word
@tab@word
@space@@tab@word
@tab@word
------------ Testing mixed echo modes ------------
@echo on
if 1==1 echo foo
if 1==1 @echo bar
@echo off
if 1==1 echo foo2
if 1==1 @echo bar2

@todo_wine@@pwd@>if 1 == 1 echo foo@space@
foo

@todo_wine@@pwd@>if 1 == 1@space@
bar
foo2
bar2
------------ Testing rem ------------

@pwd@>rem Hello@space@

@pwd@>rem  Hello@space@

@pwd@>rem   Hello || foo@space@

@pwd@>rem echo lol@space@

@pwd@>rem echo foo & echo bar@space@

@pwd@>rem @tab@  Hello@space@

@pwd@>rem@tab@  Hello@space@

@pwd@>rem@tab@echo foo & echo bar@space@
------------ Testing redirection operators ------------
--- stdout redirection
foo
foo@space@
foo@tab@
foo@space@
foo@tab@
foo7@space@@or_broken@foo@tab@
foo9@space@@or_broken@foo@tab@
foo1
foo11
foo12
--- stdout appending
foo
foo@space@
foob@space@
foob@space@
fooc@space@
foob@space@
fooc@space@
food1
foob@space@
fooc@space@
food1
food2
food21
@todo_wine@foo7@space@@space@@or_broken@not supported@space@
@todo_wine@foo@or_broken@not supported
--- redirections within IF statements
@todo_wine@foo1
-----
foo2
foo3
file does not exist, ok
foo4
baz5
baz6@space@
baz7
baz8
baz
foo@space@
baz
foo
A
B
C
------------ Testing circumflex escape character ------------
@todo_wine@hello, world
@todo_wine@hello, world
@todo_wine@hell^o, world
@todo_wine@hell^o, world
baz
@todo_wine@baz
@todo_wine@foo | echo bar
@todo_wine@foo & echo bar
@todo_wine@bak &
baz@space@
0@or_broken@1
@todo_wine@foo > foo
@todo_wine@<
@todo_wine@ffoof
@todo_wine@FOO=bar | baz
@todo_wine@0
@todo_wine@FOO=bar ^| baz
@todo_wine@bar | baz
@todo_wine@0
------------ Testing 'set' ------------
1
@todo_wine@0
FOOBAR not defined
@todo_wine@  baz
FOOBAR =  baz
@todo_wine@0
@todo_wine@  baz2
@todo_wine@0
 bar
@todo_wine@FOOBAR= bar
@todo_wine@FOOBAR =  baz2
FOOBAR =  baz2
FOOBAR not defined
1
bar
foobar
FOO not defined
BAZ=bazbaz
bazbaz
set "FOO=bar" should not include the quotes in the variable value
bar
foo
''
'foo@space@'
'foo@tab@'
------------ Testing variable expansion ------------
~dp0 should be directory containing batch file
@pwd@\
@pwd@\
CD value @pwd@@or_broken@CD value@space@
%
P
P
S
P
PS
ERRORLEVEL
0
00
0ERRORLEVEL
0
0%
P0
0S
P0S
------------ Testing variable substrings ------------
q
qwe
er
@todo_wine@'ty'@or_broken@''
't'@or_broken@''
ert@or_broken@qwerty
e@or_broken@qwerty
''@or_broken@'qwerty'
r@or_broken@qwerty
------------ Testing variable substitution ------------
--- in FOR variables
@todo_wine@"A B"
C
'A B'@or_broken@''
'C'@or_broken@''
@pwd@\C D@or_broken@%~ff
@pwd@\E@or_broken@%~ff
@drive@
@drive@
@path@@or_broken@%~pd
@path@@or_broken@%~pd
L M
N
'.OOL'
'.TABC'
''
@todo_wine@'@drive@@shortpath@R S'@or_broken@''
@todo_wine@'@drive@@shortpath@T'@or_broken@''
@todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
@todo_wine@''@or_broken@'%~ai'
@todo_wine@''@or_broken@'%~ai'
@todo_wine@'--a------'@or_broken@'%~ai'
@todo_wine@''@or_broken@'%~ti'
@todo_wine@''@or_broken@'%~ti'
@todo_wine@''@or_broken@'%~zi'
@todo_wine@''@or_broken@'%~zi'
@drive@@path@
@drive@@path@
@drive@
@drive@
@drive@
@drive@
''
'.eh'
--- in parameters
@todo_wine@"A B"
C
@todo_wine@'A B'@or_broken@''
'C'@or_broken@''
@todo_wine@@pwd@\C D
@pwd@\E
@drive@
@drive@
@path@
@path@
@todo_wine@L M
N
@todo_wine@'.OOL'
'.TABC'
''
@todo_wine@'@drive@@shortpath@R S'@or_broken@''
@todo_wine@'@drive@@shortpath@T'@or_broken@''
@todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
@drive@@path@
@drive@@path@
@drive@
@drive@
@drive@
@drive@
''
'.eh'@or_broken@''
------------ Testing variable delayed expansion ------------
--- default mode (load-time expansion)
foo
!FOO!
foo
foo
--- runtime (delayed) expansion mode
foo
@todo_wine@foo@or_broken@!FOO!
foo
@todo_wine@bar@or_broken@foo
0
0@or_broken@1
foo
!FOO!
--- using /V cmd flag
foo
@todo_wine@foo@or_broken@!FOO!
foo
!FOO!
------------ Testing conditional execution ------------
--- unconditional ampersand
foo1
bar2@space@
foo2
foobar deleted
--- on success conditional and
@todo_wine@foo3 not created
bar4@space@
foo4
--- on failure conditional or
foo5
foo6@space@
@todo_wine@------------ Testing cd ------------
singleFile
Current dir: @pwd@\foobar@or_broken@Current dir:@space@
@pwd@\foobar
@pwd@
@pwd@\foobar
@pwd@
@pwd@\foobar
@pwd@
@pwd@
@pwd@
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@
@pwd@\foobar
------------ Testing type ------------

@pwd@>type foobaz@space@
bar

@pwd@>echo ---@space@
---
bar
---
------------ Testing NUL ------------
bar
bar
bar
NUL
@todo_wine@foo created
------------ Testing if/else ------------
if/else should work with blocks
if seems to work
else seems to work
if seems not to detect /c as parameter
Testing case sensitivity with and without /i option
if seems to default to case sensitivity
if /i seems to work
if /I seems to work
Testing string comparisons
equal
non equal
non equal
equal
Testing tabs handling
doom
doom
doom
lol
quake
quake
quake
------------ Testing for ------------
--- plain FOR
A
B
C
%I
%I
%I
%j
%j
%j
A
B
C
1
4
1
A
B
C
X
X2
X3
foo
M
X
M
N
O
`echo
A
B`
'echo
A
B'
@todo_wine@"echo A B"
@todo_wine@"A B"
C
--- imbricated FORs
@todo_wine@X Y
@todo_wine@X Y
@todo_wine@A C
@todo_wine@A D
@todo_wine@B C
@todo_wine@B D
@todo_wine@A C
@todo_wine@A D
@todo_wine@B C
@todo_wine@B D
--- basic wildcards
bazbaz
--- for /d
baz
foo
bar
--- for /L
1
3
5
1
3
5
0
2
1
-1
@todo_wine@ErrorLevel 0
@todo_wine@ErrorLevel 0
--- for /a
------ individual operations
0
@todo_wine@3
@todo_wine@-1
@todo_wine@3
@todo_wine@6
@todo_wine@10
@todo_wine@4
@todo_wine@4
@todo_wine@-4
0
@todo_wine@2
@todo_wine@2
@todo_wine@-2
@todo_wine@1
@todo_wine@4
0@or_broken@1073741824
0@or_broken@-1073741824
@todo_wine@-4
@todo_wine@9
@todo_wine@2
0
@todo_wine@-1
@todo_wine@-3
0
@todo_wine@1
@todo_wine@1
@todo_wine@4
@todo_wine@1
@todo_wine@5
@todo_wine@5
@todo_wine@7
@todo_wine@5
@todo_wine@5
@todo_wine@5
@todo_wine@4
@todo_wine@6
@todo_wine@1
------ precedence and grouping
@todo_wine@4
@todo_wine@10
@todo_wine@18@or_broken@10
@todo_wine@2@or_broken@0
@todo_wine@2@or_broken@0
0@or_broken@4
@todo_wine@4
@todo_wine@3@or_broken@4
------ octal and hexadecimal
@todo_wine@3@or_broken@4
@todo_wine@18
@todo_wine@18
@todo_wine@15
------ variables
@todo_wine@3
@todo_wine@3@or_broken@foo not defined
@todo_wine@3@or_broken@0
@todo_wine@3@or_broken@0
@todo_wine@3@or_broken@0
@todo_wine@9@or_broken@0
0
@todo_wine@4@or_broken@0
@todo_wine@-7@or_broken@0
@todo_wine@-1@or_broken@0
@todo_wine@5@or_broken@0
@todo_wine@4@or_broken@0
@todo_wine@1@or_broken@0
0
@todo_wine@5@or_broken@0

--- for /F
------ string argument
a
a
a
a
a
------ fileset argument
--------- basic blank handling
a
a
a
a
a
b
--------- multi-line with empty lines
a
b
c
--------- multiple files
a
b
c
q
kkk
q
kkk
a
b
c
------ eol option
@todo_wine@ad
@todo_wine@z@y
@todo_wine@a|d
@todo_wine@no output
@todo_wine@no output
------ delims option
@todo_wine@a
@todo_wine@a@space@
@todo_wine@a d
@todo_wine@a
@todo_wine@C r
@todo_wine@foo bar baz
@todo_wine@c:\
------ skip option
@todo_wine@c
@todo_wine@no output
@todo_wine@no output
------------ Testing del /a ------------
not-r.test not found after delete, good
r.test found before delete, good
r.test not found after delete, good
------------ Testing del /q ------------
del /q * succeeded on file1
del /q * succeeded on file2.dat
------------ Testing del /s ------------
------------ Testing rename ------------
--- ren and rename are synonymous
foo renamed to bar
bar renamed to foo
--- name collision
foo
bar
--- rename read-only files
read-only file renamed
--- rename directories
dir renamed
read-only dir renamed
--- rename in other directory
@todo_wine@rename impossible in other directory
@todo_wine@original file still present
------------ Testing move ------------
--- file move
file move succeeded
@todo_wine@file move with overwrite succeeded@or_broken@file overwrite impossible!
@todo_wine@bar@or_broken@baz
read-only files are moveable
file moved in subdirectory
@todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
@todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1
--- directory move
simple directory move succeeded
moving a directory to itself gives error; errlevel 1
------ dir in dir move
foo
bar2
foo2
------------ Testing mkdir ------------
--- md and mkdir are synonymous
0
0
--- creating an already existing directory/file must fail
1
1
--- multilevel path creation
0
0
0
0
0
1
0
0
--- trailing backslashes
0
dir created
0
--- invalid chars
mkdir ? gives errorlevel 1
mkdir ?\foo gives errorlevel 1
mkdir foo\? gives errorlevel 1
ok, foo created
mkdir foo\bar\? gives errorlevel 1
ok, foo\bar created
--- multiple directories at once
foo created
bar created
foobar created
bar\baz created
mkdir foo\* errorlevel 1
ok, foo created
------------ Testing rmdir ------------
0
dir removed
0
dir removed
0
0
file not removed
0
non-empty dir not removed
0
non-empty dir not removed
recursive rmdir succeeded
recursive rmdir succeeded
foo removed
bar removed
foobar removed
bar\baz removed
------------ Testing pushd/popd ------------
@pwd@
--- popd is no-op when dir stack is empty
@pwd@
--- pushing non-existing dir
@pwd@
--- basic behaviour
@pwd@\foobar
@pwd@
@pwd@\foobar\baz
@pwd@\foobar
@pwd@\foobar
@pwd@
@pwd@\foobar
@pwd@
------------ Testing attrib ------------
A            @pwd@\foobar\foo@or_broken@A          @pwd@\foobar\foo@or_broken@A       I    @pwd@\foobar\foo
--- read-only attribute
A    R       @pwd@\foobar\foo@or_broken@A    R     @pwd@\foobar\foo@or_broken@A    R  I    @pwd@\foobar\foo
foo
foo original contents
Read-only file not deleted
Read-only file forcibly deleted
--- recursive behaviour
@todo_wine@A            @pwd@\foobar\baz\level2@or_broken@A          @pwd@\foobar\baz\level2@or_broken@A       I    @pwd@\foobar\baz\level2
@todo_wine@A    R       @pwd@\foobar\level1@or_broken@A    R     @pwd@\foobar\level1@or_broken@A    R  I    @pwd@\foobar\level1
@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
A            @pwd@\foobar\bar@or_broken@A          @pwd@\foobar\bar@or_broken@A       I    @pwd@\foobar\bar
--- folders processing
             @pwd@\foobar@or_broken@           @pwd@\foobar@or_broken@        I    @pwd@\foobar
@todo_wine@     R       @pwd@\foobar\baz@or_broken@     R     @pwd@\foobar\baz@or_broken@           @pwd@\foobar\baz@or_broken@     R  I    @pwd@\foobar\baz
@todo_wine@A            @pwd@\foobar\baz\toto@or_broken@A          @pwd@\foobar\baz\toto@or_broken@A       I    @pwd@\foobar\baz\toto
toto
lulu
file created in read-only dir
------------ Testing assoc ------------
--- setting association
---
.foo=bar
.foo=bar
+++
.foo=bar
--- resetting association
---
+++
---
------------ Testing ftype ------------
--- setting association
---
footype=foo_opencmd
.foo=footype
footype=foo_opencmd
+++
footype=foo_opencmd
--- resetting association
@todo_wine@original value@or_broken@buggyXP@or_broken@!FOO!
------------ Testing CALL ------------
--- external script
foo@space@
foo 8
foo@space@@space@
foo bar@space@
@todo_wine@foo ""@space@
@todo_wine@"" bar@space@
foo ''@space@
'' bar@space@
--- internal routines
bar :testRoutine
foo@space@
foo bar
@todo_wine@foo ""
@todo_wine@"" bar
foo ''
'' bar
--- with builtins
@todo_wine@0
@todo_wine@foo created
@todo_wine@Should expand foobaz
@todo_wine@batfile
@todo_wine@robinfile
@todo_wine@1
@todo_wine@1
non-builtin dir
------------ Testing SHIFT ------------
'p1' 'p2' 'p3' 'p4' 'p5'
'p2' 'p3' 'p4' 'p5' ''
'p3' 'p4' 'p5' '' ''
'p3' 'p5' '' '' ''
'p3' 'p5' '' '' ''
'p5' '' '' '' ''
------------ Testing cmd invocation ------------
--- a batch file can delete itself
file correctly deleted
--- a batch file can alter itself
@todo_wine@bar
------------ Testing setlocal/endlocal ------------
--- enable/disable extensions
@todo_wine@ErrLev:@space@
ErrLev: 0
ErrLev: 0
@todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
ErrLev: 0
--- setlocal with corresponding endlocal
globalval
localval
globalval
globalval
--- setlocal with no corresponding endlocal
globalval
localval
@todo_wine@globalval
------------ Testing Errorlevel ------------
9009
1
errorlevel just right, good
errorlevel with leading zero just right, good
errorlevel with negative number OK
abc0def@or_broken@abc1def
errorlevel zero, good@or_broken@errorlevel nonzero, bad
7 should be 7
7 should still be 7
------------ Testing GOTO ------------
goto with no leading space worked
goto with a leading space worked
goto with a leading tab worked
goto with a following space worked
------------ Testing combined CALLs/GOTOs ------------
world
cheball
barbare
bar
foo
baz
cheball
barbare
