
Found while trying to look into bug 44236. A batch script is executed containing a line like this: if (%1)==(p) start /W " " "%SFDIR%WSFplot" wr2300.t35 3 This returns an error like this: Syntax error Can't recognize 'p' as an internal or external command, or batch script. It looks like native does handle the brackets differently when contained inside the condition part of the if command. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44338 Signed-off-by: Bernhard Übelacker <bernhardu@mailbox.org> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
1692 lines
32 KiB
Plaintext
1692 lines
32 KiB
Plaintext
|
|
@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/
|
|
|
|
|
|
@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@
|
|
|
|
@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@
|
|
|
|
@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@
|
|
--- @ with chains and brackets
|
|
|
|
@todo_wine@@pwd@>(echo the @ character chains until && ) && echo and can hide brackets || () ||@space@
|
|
@todo_wine@the @ character chains until
|
|
@todo_wine@we leave the current depth
|
|
@todo_wine@and can hide brackets
|
|
@todo_wine@---
|
|
noecho1
|
|
noecho2
|
|
echo3
|
|
------------ Testing 'echo' [OFF] ------------
|
|
word
|
|
'singlequotedword'
|
|
"doublequotedword"
|
|
at-echoed-word
|
|
"/?"
|
|
|
|
.
|
|
word
|
|
.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 parameterization ------------
|
|
'a', 'b', 'c'
|
|
'"a b c"', '', ''
|
|
'"a b"\c', '', ''
|
|
'a', '~`+', '.{}!+b'
|
|
'a', 'b', ''
|
|
'"a;b"', '', ''
|
|
'a', 'b', ''
|
|
'a[b]{c}(d)e', '', ''
|
|
'a', '', ''
|
|
second line
|
|
'a', 'b', 'c'
|
|
'a', 'b', 'c'
|
|
'a', 'b', ''
|
|
------------ 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
|
|
foo13
|
|
foo14
|
|
foo15
|
|
--- 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
|
|
foo1
|
|
foo2
|
|
-----
|
|
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 ------------
|
|
hello, world
|
|
hello, world
|
|
hell^o, world
|
|
hell^o, world
|
|
helloworld
|
|
hello
|
|
world
|
|
hello
|
|
|
|
finished
|
|
baz
|
|
baz
|
|
foo | echo bar
|
|
foo & echo bar
|
|
bak &
|
|
baz@space@
|
|
0@or_broken@1
|
|
foo > foo
|
|
<
|
|
ffoof
|
|
WINE_FOO=bar | baz
|
|
0
|
|
WINE_FOO=bar ^| baz
|
|
bar | baz
|
|
0
|
|
------------ Testing chains ------------
|
|
--- chain success
|
|
a1
|
|
a2
|
|
b1
|
|
b2
|
|
c1
|
|
@todo_wine@---
|
|
d1
|
|
d2
|
|
d3
|
|
e1
|
|
e2
|
|
e3
|
|
f1
|
|
f2
|
|
@todo_wine@---
|
|
g1
|
|
g2
|
|
g3
|
|
h1
|
|
h2
|
|
h3
|
|
i1
|
|
i2
|
|
@todo_wine@---
|
|
j1
|
|
@todo_wine@j3
|
|
@todo_wine@---
|
|
k1
|
|
@todo_wine@---
|
|
l1
|
|
@todo_wine@---
|
|
--- chain failure
|
|
a1
|
|
a2
|
|
b1
|
|
@todo_wine@---
|
|
c1
|
|
c2
|
|
d1
|
|
d2
|
|
d3
|
|
e1
|
|
e2
|
|
@todo_wine@---
|
|
f1
|
|
f2
|
|
f3
|
|
g1
|
|
@todo_wine@g3
|
|
@todo_wine@---
|
|
h1
|
|
@todo_wine@---
|
|
i1
|
|
@todo_wine@i3
|
|
@todo_wine@---
|
|
j1
|
|
j2
|
|
j3
|
|
k1
|
|
k2
|
|
@todo_wine@---
|
|
l1
|
|
l2
|
|
l3
|
|
--- chain brackets
|
|
a1
|
|
a2
|
|
a3
|
|
b1
|
|
b2
|
|
b3
|
|
c1
|
|
c2
|
|
@todo_wine@---
|
|
d1
|
|
d2
|
|
d3
|
|
e1
|
|
e2
|
|
e3
|
|
f1
|
|
f2
|
|
@todo_wine@---
|
|
g1
|
|
@todo_wine@---
|
|
h1
|
|
@todo_wine@---
|
|
i1
|
|
@todo_wine@---
|
|
j1
|
|
j2
|
|
j3
|
|
k1
|
|
k2
|
|
@todo_wine@---
|
|
l1
|
|
l2
|
|
l3
|
|
m1
|
|
@todo_wine@---
|
|
n1
|
|
@todo_wine@---
|
|
o1
|
|
@todo_wine@---
|
|
p1
|
|
p2
|
|
p3
|
|
q1
|
|
q2
|
|
@todo_wine@---
|
|
r1
|
|
r2
|
|
r3
|
|
--- chain pipe
|
|
@todo_wine@a@space@
|
|
@todo_wine@a@space@
|
|
---
|
|
b2
|
|
c1
|
|
c3
|
|
d1
|
|
@todo_wine@---
|
|
e1
|
|
e3
|
|
f2
|
|
f3
|
|
g2
|
|
@todo_wine@---
|
|
h2
|
|
h3
|
|
i3
|
|
--- chain pipe input
|
|
a2:[a1,a2]
|
|
b3:[b2:[b1,b2],b3]@or_broken@b3:[b2:,b3]
|
|
c4:[c3:[c2:[c1,c2],c3],c4]@or_broken@c4:[c3:[c2:,c3],c4]@or_broken@c4:[c3:,c4]
|
|
d2:[d1,d2]
|
|
e3:[e2:[e1,e2],e3]@or_broken@e3:[e2:,e3]
|
|
f4:[f3:[f2:[f1,f2],f3],f4]@or_broken@f4:[f3:[f2:,f3],f4]@or_broken@f4:[f3:,f4]
|
|
--- chain else
|
|
a1
|
|
b2
|
|
@todo_wine@---
|
|
@todo_wine@c3
|
|
@todo_wine@---
|
|
@todo_wine@d3
|
|
@todo_wine@---
|
|
@todo_wine@---
|
|
@todo_wine@---
|
|
@todo_wine@---
|
|
@todo_wine@---
|
|
--- chain else (if true)
|
|
a1 else echo a2
|
|
b2 else echo b3
|
|
c1
|
|
c2 else echo c3
|
|
d1
|
|
@todo_wine@---
|
|
e1
|
|
e2 else echo e3
|
|
f3
|
|
g1 else echo g2
|
|
g3
|
|
h1 else echo h2
|
|
@todo_wine@---
|
|
i1 else echo i2
|
|
i3
|
|
@todo_wine@j2@space@
|
|
@todo_wine@---
|
|
k1
|
|
k2
|
|
l1
|
|
@todo_wine@---
|
|
m1
|
|
m2
|
|
n1
|
|
o1
|
|
p1
|
|
q1
|
|
@todo_wine@---
|
|
--- chain else (if false)
|
|
j3
|
|
---
|
|
k3
|
|
l3
|
|
m3
|
|
n3
|
|
o2
|
|
o3
|
|
p2
|
|
@todo_wine@---
|
|
q2
|
|
q3
|
|
------------ Testing 'set' ------------
|
|
1
|
|
0
|
|
WINE_FOOBAR not defined
|
|
baz
|
|
WINE_FOOBAR = baz
|
|
0
|
|
baz2
|
|
0
|
|
bar
|
|
WINE_FOOBAR= bar
|
|
WINE_FOOBAR = baz2
|
|
WINE_FOOBAR = baz2
|
|
WINE_FOOBAR not defined
|
|
1
|
|
bar
|
|
foobar
|
|
WINE_FOO not defined
|
|
WINE_BAZ=bazbaz
|
|
bazbaz
|
|
set "WINE_FOO=bar" should not include the quotes in the variable value
|
|
bar
|
|
foo
|
|
''
|
|
'foo@space@'
|
|
'foo@tab@'
|
|
'value@space@'
|
|
'value'
|
|
'jim fred'
|
|
'"jim" fred'
|
|
'jim fred'
|
|
'jim'
|
|
'apple"banana"grape'
|
|
I'm here!@space@
|
|
I'm here!@space@
|
|
I'm here!@space@
|
|
------------ Testing 'choice' ------------
|
|
@todo_wine@Example message [A,B,C]?A@or_broken@choice unavailable
|
|
@todo_wine@1@or_broken@9009
|
|
@todo_wine@Example message [A,B,C]?B@or_broken@choice unavailable
|
|
@todo_wine@2@or_broken@9009
|
|
@todo_wine@[D,E,F]?F@or_broken@choice unavailable
|
|
@todo_wine@3@or_broken@9009
|
|
@todo_wine@[A,B,C,X,Y,Z]?Y@or_broken@choice unavailable
|
|
@todo_wine@5@or_broken@9009
|
|
@todo_wine@A@or_broken@choice unavailable
|
|
@todo_wine@1@or_broken@9009
|
|
@todo_wine@[a,b,c,A,B,C]?A@or_broken@choice unavailable
|
|
@todo_wine@4@or_broken@9009
|
|
@todo_wine@255@or_broken@9009
|
|
------------ Testing variable expansion ------------
|
|
~p0 should be path containing batch file
|
|
@path@
|
|
@path@
|
|
~dp0 should be directory containing batch file
|
|
@drive@@path@
|
|
@drive@@path@
|
|
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
|
|
'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
|
|
"A B"
|
|
C
|
|
"A B"
|
|
C
|
|
'A B'@or_broken@''
|
|
'C'@or_broken@''
|
|
@drive@@path@C D@or_broken@%~ff
|
|
@drive@@path@E@or_broken@%~ff
|
|
@drive@
|
|
@drive@
|
|
@path@@or_broken@%~pd
|
|
@path@@or_broken@%~pd
|
|
L M
|
|
N
|
|
'.OOL'
|
|
'.TABC'
|
|
''
|
|
'@drive@@shortpath@R S'@or_broken@''
|
|
'@drive@@shortpath@T'@or_broken@''
|
|
'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
|
|
''@or_broken@'%~ai'
|
|
''@or_broken@'%~ai'
|
|
'--a------'@or_broken@'--a--------'@or_broken@'--a--c---'@or_broken@'%~ai'
|
|
'5'@or_broken@'%~zi'
|
|
''@or_broken@'%~ti'
|
|
''@or_broken@'%~ti'
|
|
''@or_broken@'%~zi'
|
|
''@or_broken@'%~zi'
|
|
@drive@@path@
|
|
@drive@@path@
|
|
@drive@
|
|
@drive@
|
|
@drive@
|
|
@drive@
|
|
''
|
|
'.eh'
|
|
',,,,,,,,,'
|
|
--- in parameters
|
|
"A B"
|
|
C
|
|
'A B'@or_broken@''
|
|
'C'@or_broken@''
|
|
@drive@@path@C D
|
|
@drive@@path@E
|
|
@drive@
|
|
@drive@
|
|
@path@
|
|
@path@
|
|
L M
|
|
N
|
|
'.OOL'
|
|
'.TABC'
|
|
''
|
|
'@drive@@shortpath@R S'@or_broken@''
|
|
'@drive@@shortpath@T'@or_broken@''
|
|
'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
|
|
@drive@@path@
|
|
@drive@@path@
|
|
@drive@
|
|
@drive@
|
|
@drive@
|
|
@drive@
|
|
''
|
|
'.eh'@or_broken@''
|
|
------------ Testing parameter zero ------------
|
|
:func parm1
|
|
[:func] [@drive@] [@path@] [test] [.cmd] [@drive@@shortpath@test.cmd]
|
|
------------ Testing variable delayed expansion ------------
|
|
--- default mode (load-time expansion)
|
|
foo
|
|
!WINE_FOO!
|
|
foo
|
|
foo
|
|
--- runtime (delayed) expansion mode
|
|
foo
|
|
foo@or_broken@!WINE_FOO!
|
|
foo
|
|
bar@or_broken@foo
|
|
0
|
|
0@or_broken@1
|
|
foo
|
|
!WINE_FOO!
|
|
--- using /V cmd flag
|
|
foo
|
|
foo@or_broken@!WINE_FOO!
|
|
foo
|
|
!WINE_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: @drive@@path@foobar@or_broken@Current dir:@space@
|
|
@drive@@path@foobar
|
|
@pwd@
|
|
@drive@@path@foobar
|
|
@pwd@
|
|
@drive@@path@foobar
|
|
@pwd@
|
|
@pwd@
|
|
@pwd@
|
|
@drive@@path@foobar\bar bak
|
|
@drive@@path@foobar\bar bak
|
|
@drive@@path@foobar\bar bak
|
|
@drive@@path@foobar\bar bak
|
|
@drive@@path@foobar\bar bak
|
|
@pwd@
|
|
@drive@@path@foobar
|
|
------------ Testing type ------------
|
|
|
|
@pwd@>type foobaz@space@
|
|
bar
|
|
|
|
@pwd@>echo ---@space@
|
|
---
|
|
bar
|
|
---1
|
|
bar
|
|
---2
|
|
bar
|
|
---3
|
|
---4
|
|
---5
|
|
bar
|
|
foo
|
|
---6
|
|
|
|
foobaz
|
|
|
|
|
|
|
|
foobay
|
|
|
|
|
|
---7
|
|
------------ Testing NUL ------------
|
|
bar
|
|
bar
|
|
bar
|
|
NUL
|
|
foo created
|
|
Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on b.b [8]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on a.a [7]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on subdir\a.a [8]@or_broken@Skipping file size check on NT4
|
|
------------ 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
|
|
else if seems to work
|
|
else if seems to work
|
|
else if seems to work
|
|
expected1
|
|
expected post-embedded if
|
|
comparison operators surrounded by brackets seem to work
|
|
comparison operators surrounded by brackets seem to work
|
|
comparison operators surrounded by brackets seem to work
|
|
comparison operators surrounded by brackets seem to work
|
|
--- case sensitivity with and without /i option
|
|
if seems to default to case sensitivity
|
|
if /i seems to work
|
|
if /I seems to work
|
|
--- string comparisons
|
|
equal
|
|
non equal
|
|
non equal
|
|
equal
|
|
--- tabs handling
|
|
doom
|
|
doom
|
|
doom
|
|
lol
|
|
quake
|
|
quake
|
|
quake
|
|
--- comparison operators
|
|
------ for strings
|
|
LSS string can be used as operand for LSS comparison
|
|
floats are handled as strings
|
|
numbers in quotes are handled as strings
|
|
negative numbers as well@or_broken@NT4
|
|
if /i seems to work for LSS
|
|
A LSS B
|
|
A LSS AB
|
|
A LSS BA
|
|
A LSS AA
|
|
B LSS BA
|
|
AB LSS B
|
|
AB LSS BA
|
|
AA LSS B
|
|
AA LSS AB
|
|
AA LSS BA
|
|
b LSS B@or_broken@NT4
|
|
a LSS B@or_broken@NT4
|
|
a LSS B insensitive
|
|
A LSS b
|
|
A LSS b insensitive
|
|
A LEQ A
|
|
A LEQ B
|
|
A LEQ AB
|
|
A LEQ BA
|
|
A LEQ AA
|
|
B LEQ B
|
|
B LEQ BA
|
|
AB LEQ B
|
|
AB LEQ AB
|
|
AB LEQ BA
|
|
BA LEQ BA
|
|
AA LEQ B
|
|
AA LEQ AB
|
|
AA LEQ BA
|
|
AA LEQ AA
|
|
b LEQ B@or_broken@NT4
|
|
b LEQ B insensitive
|
|
a LEQ B@or_broken@NT4
|
|
a LEQ B insensitive
|
|
A LEQ b
|
|
A LEQ b insensitive
|
|
A EQU A
|
|
B EQU B
|
|
AB EQU AB
|
|
BA EQU BA
|
|
AA EQU AA
|
|
A EQU a insensitive
|
|
A NEQ B
|
|
A NEQ AB
|
|
A NEQ BA
|
|
A NEQ AA
|
|
B NEQ A
|
|
B NEQ AB
|
|
B NEQ BA
|
|
B NEQ AA
|
|
AB NEQ A
|
|
AB NEQ B
|
|
AB NEQ BA
|
|
AB NEQ AA
|
|
BA NEQ A
|
|
BA NEQ B
|
|
BA NEQ AB
|
|
BA NEQ AA
|
|
AA NEQ A
|
|
AA NEQ B
|
|
AA NEQ AB
|
|
AA NEQ BA
|
|
A GEQ A
|
|
B GEQ A
|
|
B GEQ B
|
|
B GEQ AB
|
|
B GEQ AA
|
|
AB GEQ A
|
|
AB GEQ AB
|
|
AB GEQ AA
|
|
BA GEQ A
|
|
BA GEQ B
|
|
BA GEQ AB
|
|
BA GEQ BA
|
|
BA GEQ AA
|
|
AA GEQ A
|
|
AA GEQ AA
|
|
B GTR A
|
|
B GTR AB
|
|
B GTR AA
|
|
AB GTR A
|
|
AB GTR AA
|
|
BA GTR A
|
|
BA GTR B
|
|
BA GTR AB
|
|
BA GTR AA
|
|
AA GTR A
|
|
------------ Testing if/exist ------------
|
|
exist explicit works
|
|
exist explicit unknown file works
|
|
exist explicit in subdir works
|
|
exist simple wildcard works
|
|
exist wildcard works
|
|
negate exist wildcard works
|
|
exist wildcard bad subdir broken works
|
|
exist subdir ok
|
|
exist subdir with . ok
|
|
exist subdir with \ ok
|
|
exist subdir with \ and quotes ok
|
|
------ for numbers
|
|
negative numbers handled
|
|
negative numbers handled
|
|
octal handled
|
|
also in negative form
|
|
hexa handled
|
|
also in negative form
|
|
11 LSS 101
|
|
0 LSS 1
|
|
0 LSS 10
|
|
0 LSS 9
|
|
1 LSS 10
|
|
1 LSS 9
|
|
9 LSS 10
|
|
0 LEQ 0
|
|
0 LEQ 1
|
|
0 LEQ 10
|
|
0 LEQ 9
|
|
1 LEQ 1
|
|
1 LEQ 10
|
|
1 LEQ 9
|
|
10 LEQ 10
|
|
9 LEQ 10
|
|
9 LEQ 9
|
|
0 EQU 0
|
|
1 EQU 1
|
|
10 EQU 10
|
|
9 EQU 9
|
|
octal ok
|
|
hexa ok
|
|
string/hexa compare ok
|
|
string/hexa compare ok
|
|
0 NEQ 1
|
|
0 NEQ 10
|
|
0 NEQ 9
|
|
1 NEQ 0
|
|
1 NEQ 10
|
|
1 NEQ 9
|
|
10 NEQ 0
|
|
10 NEQ 1
|
|
10 NEQ 9
|
|
9 NEQ 0
|
|
9 NEQ 1
|
|
9 NEQ 10
|
|
0 GEQ 0
|
|
1 GEQ 0
|
|
1 GEQ 1
|
|
10 GEQ 0
|
|
10 GEQ 1
|
|
10 GEQ 10
|
|
10 GEQ 9
|
|
9 GEQ 0
|
|
9 GEQ 1
|
|
9 GEQ 9
|
|
1 GTR 0
|
|
10 GTR 0
|
|
10 GTR 1
|
|
10 GTR 9
|
|
9 GTR 0
|
|
9 GTR 1
|
|
------ for numbers and stringified numbers
|
|
strings and integers not equal
|
|
strings and integers not equal
|
|
foo
|
|
"10" GEQ "1"
|
|
'1' GEQ 1@or_broken@NT4
|
|
1 GEQ "1"
|
|
"1" GEQ "1"
|
|
'1' GEQ "1"
|
|
"10" GEQ "1"
|
|
non NT4@or_broken@1 GEQ '1'
|
|
'1' GEQ '1'
|
|
foo
|
|
1 GEQ "10"
|
|
foo
|
|
'1' GEQ "10"
|
|
"10" GEQ "10"
|
|
--- unconditional ampersand after if one line
|
|
1@space@
|
|
2@space@
|
|
3 else echo 4
|
|
---
|
|
x@space@
|
|
---
|
|
x@space@
|
|
---
|
|
x@space@
|
|
---
|
|
x@space@
|
|
---
|
|
------------ 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'
|
|
"echo A B"
|
|
"A B"
|
|
C
|
|
--- imbricated FORs
|
|
X Y
|
|
X Y
|
|
A C
|
|
A D
|
|
B C
|
|
B D
|
|
A C
|
|
A D
|
|
B C
|
|
B D
|
|
--- basic wildcards
|
|
bazbaz
|
|
--- wildcards in subdirs
|
|
pop\bar1@space@
|
|
pop\bar2.txt@space@
|
|
pop\bar3@space@
|
|
--- for /d
|
|
baz@space@
|
|
foo@space@
|
|
bar@space@
|
|
PASSED
|
|
xxx - Should be xxx
|
|
Expected second line
|
|
--- for /R
|
|
Plain directory enumeration
|
|
Plain directory enumeration from provided root
|
|
File enumeration
|
|
File enumeration from provided root
|
|
Mixed enumeration
|
|
Mixed enumeration from provided root
|
|
With duplicates enumeration
|
|
Strip missing wildcards, keep unwildcarded names
|
|
for /R passed
|
|
--- Complex wildcards unix and windows slash
|
|
Windows slashes, valid path
|
|
ASIS: foobar\baz\bazbaz
|
|
WC : foobar\baz\bazbaz
|
|
Windows slashes, invalid path
|
|
ASIS: foobar\jim\bazbaz
|
|
Unix slashes, valid path
|
|
ASIS: foobar/baz/bazbaz
|
|
WC : bazbaz
|
|
Unix slashes, invalid path
|
|
ASIS: foobar/jim/bazbaz
|
|
Done
|
|
--- for /L
|
|
1
|
|
3
|
|
5
|
|
1
|
|
3
|
|
5
|
|
0
|
|
2
|
|
1
|
|
-1
|
|
ErrorLevel 0
|
|
ErrorLevel 0
|
|
1
|
|
2
|
|
3
|
|
4
|
|
1
|
|
3
|
|
4
|
|
3
|
|
2
|
|
1
|
|
4
|
|
2
|
|
0
|
|
1
|
|
1
|
|
-1
|
|
-1
|
|
1
|
|
3
|
|
--- rems inside for loops
|
|
--- ifs inside for loops
|
|
a1
|
|
b1
|
|
d1
|
|
a2
|
|
b2
|
|
d2
|
|
a3
|
|
c3
|
|
d3
|
|
a4
|
|
c4
|
|
d4
|
|
--- set /a
|
|
------ individual operations
|
|
WINE_foo correctly 3
|
|
WINE_foo correctly -1
|
|
WINE_foo correctly 3
|
|
WINE_foo correctly 6
|
|
WINE_foo correctly 10
|
|
WINE_foo correctly 4
|
|
WINE_foo correctly 4
|
|
WINE_foo correctly -4
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly 2
|
|
WINE_foo correctly 2
|
|
WINE_foo correctly -2
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 4
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1073741824 [0]
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1073741824 [0]
|
|
WINE_foo correctly -4
|
|
WINE_foo correctly 9
|
|
WINE_foo correctly 2
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly -1
|
|
WINE_foo correctly -3
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 4
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 5
|
|
WINE_foo correctly 5
|
|
WINE_foo correctly 7
|
|
WINE_foo correctly 5
|
|
WINE_foo correctly 5
|
|
WINE_foo correctly 5
|
|
WINE_foo correctly 4
|
|
WINE_foo correctly 6
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 4
|
|
------ precedence and grouping
|
|
WINE_foo correctly 10
|
|
WINE_foo correctly 18@or_broken@ERROR: WINE_foo incorrectly [18]
|
|
WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly 0 [2]
|
|
WINE_foo correctly 2@or_broken@ERROR: WINE_foo incorrectly [2]
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 4 [0]
|
|
WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly [4]
|
|
WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
|
|
WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly [3]
|
|
------ octal and hexadecimal
|
|
WINE_foo correctly 18
|
|
WINE_foo correctly 18
|
|
WINE_foo correctly 15
|
|
WINE_foo correctly 3
|
|
------ variables
|
|
WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
|
|
WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
|
|
WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
|
|
WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly [4]
|
|
WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly 0 [3]
|
|
WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
|
|
WINE_baz correctly 4@or_broken@ERROR: WINE_baz incorrectly [4]
|
|
WINE_foo correctly 9@or_broken@ERROR: WINE_foo incorrectly 3 [9]
|
|
WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly 3 [9]
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly 4
|
|
WINE_bar correctly 4
|
|
WINE_foo correctly -7@or_broken@ERROR: WINE_foo incorrectly 4 [-7]
|
|
WINE_bar correctly -7@or_broken@ERROR: WINE_bar incorrectly 4 [-7]
|
|
WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly -7 [-1]
|
|
WINE_bar correctly -1@or_broken@ERROR: WINE_bar incorrectly -7 [-1]
|
|
WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
|
|
WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly [1]
|
|
WINE_foo correctly 4@or_broken@ERROR: WINE_foo incorrectly 1 [4]
|
|
WINE_bar correctly 4@or_broken@ERROR: WINE_bar incorrectly 1 [4]
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 4 [1]
|
|
WINE_bar correctly 1@or_broken@ERROR: WINE_bar incorrectly 4 [1]
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly 1 [0]
|
|
WINE_bar correctly 0@or_broken@ERROR: WINE_bar incorrectly 1 [0]
|
|
WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
|
|
WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
|
|
WINE_foo correctly 5@or_broken@ERROR: WINE_foo incorrectly 0 [5]
|
|
WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly [7]
|
|
WINE_foo correctly 19@or_broken@ERROR: WINE_foo incorrectly 0 [19]
|
|
WINE_bar correctly 3@or_broken@ERROR: WINE_bar incorrectly [3]
|
|
WINE_baz correctly 4
|
|
--- quotes
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_baz correctly 3
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_baz correctly 3
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_baz correctly 3
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_baz correctly 3
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 2
|
|
WINE_baz correctly 3
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 1
|
|
WINE_bar correctly 5
|
|
WINE_baz correctly 2
|
|
WINE_foo correctly 18
|
|
WINE_foo correctly 3
|
|
WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 4 [7]
|
|
--- whitespace are ignored between double char operators
|
|
WINE_foo correctly 10@or_broken@ERROR: WINE_foo incorrectly 4 [10]
|
|
WINE_bar correctly 50@or_broken@ERROR: WINE_bar incorrectly 5 [50]
|
|
WINE_foo correctly 772@or_broken@ERROR: WINE_foo incorrectly 4 [772]
|
|
WINE_bar correctly 7720@or_broken@ERROR: WINE_bar incorrectly 5 [7720]
|
|
--- invalid operator sequence
|
|
4
|
|
4
|
|
----- negative prefix
|
|
WINE_foo correctly -1
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
|
|
WINE_foo correctly 6
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly 6
|
|
WINE_foo correctly 2
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
|
|
WINE_foo correctly 5
|
|
WINE_foo correctly 3@or_broken@ERROR: WINE_foo incorrectly -5 [3]
|
|
----- assignment tests involving the end destination
|
|
WINE_foo correctly 11@or_broken@ERROR: WINE_foo incorrectly 3 [11]
|
|
WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
|
|
WINE_bar correctly 9@or_broken@ERROR: WINE_bar incorrectly [9]
|
|
WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 2 [6]
|
|
WINE_bar correctly 10@or_broken@ERROR: WINE_bar incorrectly [10]
|
|
WINE_baz correctly 7@or_broken@ERROR: WINE_baz incorrectly [7]
|
|
WINE_foo correctly 7@or_broken@ERROR: WINE_foo incorrectly 2 [7]
|
|
WINE_bar correctly 7@or_broken@ERROR: WINE_bar incorrectly 2 [7]
|
|
----- equal precedence on stack
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
|
|
WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
|
|
WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly [-1]
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly [1]
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly [0]
|
|
WINE_foo correctly -1
|
|
WINE_foo correctly 0@or_broken@ERROR: WINE_foo incorrectly -1 [0]
|
|
WINE_foo correctly 0
|
|
WINE_foo correctly 1@or_broken@ERROR: WINE_foo incorrectly 0 [1]
|
|
WINE_foo correctly -1@or_broken@ERROR: WINE_foo incorrectly 0 [-1]
|
|
WINE_foo correctly 25@or_broken@ERROR: WINE_foo incorrectly 20 [25]
|
|
WINE_foo correctly 20
|
|
WINE_foo correctly 1
|
|
WINE_foo correctly 4
|
|
WINE_foo correctly 7
|
|
WINE_foo correctly 8@or_broken@ERROR: WINE_foo incorrectly 4 [8]
|
|
WINE_foo correctly 6@or_broken@ERROR: WINE_foo incorrectly 5 [6]
|
|
WINE_bar correctly 6@or_broken@ERROR: WINE_bar incorrectly 5 [6]
|
|
--- for /F
|
|
------ string argument
|
|
a
|
|
XaX
|
|
a@or_broken@no output
|
|
XaX@or_broken@no output
|
|
a
|
|
a@or_broken@no output
|
|
a
|
|
a@or_broken@no output
|
|
a
|
|
a@or_broken@no output
|
|
a
|
|
a@or_broken@no output
|
|
------ 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
|
|
------ command argument
|
|
Passed1@or_broken@Missing functionality - Broken1
|
|
Passed2@or_broken@Missing functionality - Broken2
|
|
Passed3@or_broken@Missing functionality - Broken3
|
|
Passed4@or_broken@Missing functionality - Broken4
|
|
Passed5@or_broken@Missing functionality - Broken5
|
|
Passed6@or_broken@Missing functionality - Broken6
|
|
Passed7@or_broken@Missing functionality - Broken7
|
|
------ eol option
|
|
and@or_broken@Broken NT4 functionality1
|
|
Line@or_broken@Broken NT4 functionality2
|
|
Line@or_broken@Broken NT4 functionality3
|
|
ad
|
|
z@y
|
|
a|d
|
|
no output
|
|
no output
|
|
------ delims option
|
|
a
|
|
a@space@
|
|
a d
|
|
a
|
|
C r
|
|
foo bar baz
|
|
c:\
|
|
------ skip option
|
|
c
|
|
no output
|
|
no output
|
|
c
|
|
c
|
|
no output
|
|
------ tokens= option
|
|
h=%h i=a j=%j k=%k l=%l m=%m o=%o
|
|
h=%h i=b j=%j k=%k l=%l m=%m o=%o
|
|
h=%h i=a j=c k=e l=f m=g o=%o
|
|
h=%h i=a j=e k=f g l=%l m=%m o=%o
|
|
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
|
|
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
|
|
h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
|
|
h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o
|
|
h=%h i=a j=b k= l= m=%m n=%n o=%o
|
|
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
|
|
h=%h i=a j=b k= l= m= n=%n o=%o
|
|
h=%h i=a j=b k= l= m= n= o=%o
|
|
u=a v=b w=c x=d y=e z=f A=%A a=%a
|
|
@todo_wine@U=a V=b W=c X=d Y=e Z=f A=%A a=m
|
|
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
|
|
h=%h i=e j=%j k=%k l=%l m=%m o=%o
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1:3.14,%B
|
|
2:3.14,
|
|
4:3,14
|
|
------ parameter splitting
|
|
:forFParameterSplittingFunc myparam1=myvalue1 myparam2=myparam2 mytest@space@@space@@space@
|
|
:forFParameterSplittingFunc myparam1=myvalue1 myparam2=myparam2 mytest@space@@space@@space@
|
|
4:3.14,%B
|
|
5:3,14
|
|
6:14,
|
|
------------ Testing del ------------
|
|
deleting 'file'
|
|
errorlevel is 0, good
|
|
successfully deleted 'file'
|
|
attempting to delete 'file', even though it is not present
|
|
errorlevel is 0, good
|
|
------------ 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
|
|
rename impossible in other directory
|
|
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
|
|
moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
|
|
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
|
|
bazbaz created
|
|
zabzab 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
|
|
@drive@@path@foobar
|
|
@pwd@
|
|
@drive@@path@foobar\baz
|
|
@drive@@path@foobar
|
|
@drive@@path@foobar
|
|
@pwd@
|
|
@drive@@path@foobar
|
|
@pwd@
|
|
------------ Testing attrib ------------
|
|
A@spaces@@drive@@path@foobar\foo@or_broken@A I@spaces@@drive@@path@foobar\foo
|
|
--- read-only attribute
|
|
A R@spaces@@drive@@path@foobar\foo@or_broken@A R I@spaces@@drive@@path@foobar\foo
|
|
foo
|
|
foo original contents
|
|
Read-only file not deleted
|
|
Read-only file forcibly deleted
|
|
--- recursive behaviour
|
|
A@spaces@@drive@@path@foobar\baz\level2@or_broken@A I@spaces@@drive@@path@foobar\baz\level2
|
|
A R@spaces@@drive@@path@foobar\level1@or_broken@A R I@spaces@@drive@@path@foobar\level1
|
|
A R@spaces@@drive@@path@foobar\baz\level2@or_broken@A R I@spaces@@drive@@path@foobar\baz\level2
|
|
A@spaces@@drive@@path@foobar\bar@or_broken@A I@spaces@@drive@@path@foobar\bar
|
|
--- folders processing
|
|
@spaces@@drive@@path@foobar@or_broken@ I@spaces@@drive@@path@foobar
|
|
@todo_wine@ R@spaces@@drive@@path@foobar\baz@or_broken@@spaces@@drive@@path@foobar\baz@or_broken@ R I@spaces@@drive@@path@foobar\baz
|
|
A@spaces@@drive@@path@foobar\baz\toto@or_broken@A I@spaces@@drive@@path@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@!WINE_FOO!
|
|
------------ Testing CALL ------------
|
|
--- external script
|
|
foo@space@
|
|
foo 8
|
|
foo@space@@space@
|
|
foo bar@space@
|
|
foo ""@space@
|
|
"" bar@space@
|
|
foo ''@space@
|
|
'' bar@space@
|
|
--- internal routines
|
|
bar :testRoutine
|
|
foo@space@
|
|
foo bar
|
|
foo ""
|
|
"" bar
|
|
foo ''
|
|
'' bar
|
|
--- with builtins
|
|
0
|
|
foo created
|
|
Should expand foobaz
|
|
batfile
|
|
robinfile
|
|
1
|
|
1
|
|
non-builtin dir
|
|
Line one
|
|
Line two
|
|
Get if
|
|
... and else!
|
|
passed
|
|
------------ 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
|
|
bar
|
|
---------- Testing copy
|
|
Passed: Found expected dummy.file
|
|
Passed: Found expected dir1\file1
|
|
Passed: Found expected dir1\file1
|
|
Passed: Found expected dir1\file99
|
|
Passed: Found expected file1
|
|
Passed: Did not find dir2
|
|
Passed: Did not find dir2\file1
|
|
Passed: Found expected dir1\file1
|
|
Passed: Found expected dir1\file2
|
|
Passed: Found expected dir1\file3
|
|
Passed: Found expected dir1\file1
|
|
Passed: Found expected dir1\file2
|
|
Passed: Found expected dir1\file3
|
|
Passed: Found expected file1
|
|
Passed: Found expected file2
|
|
Passed: Found expected file3
|
|
Passed: Did not find dir2
|
|
Passed: Did not find dir2\file1
|
|
Passed: Did not find dir2\file2
|
|
Passed: Did not find dir2\file3
|
|
Passed: Found expected testfile
|
|
Passed: Found expected testfile
|
|
Passed: Found expected testfile
|
|
Passed: Found expected testfile
|
|
Passed: Found expected testfile
|
|
Passed: Found expected dir1\fred
|
|
Passed: Found expected dir1\fred
|
|
Passed: Found expected fred
|
|
Passed: Found expected fred
|
|
Passed: file size check on file1 [5]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file2 [8]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file3 [11]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file1_default [5]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file1_default2 [5]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file1_plus_eof [6]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file2_plus_eof [9]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file3_plus_eof [12]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file12_plus_eof [14]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file12_no_eof [13]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file12_eof2 [14]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file1 [24]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file2 [16]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file3 [13]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file1_binary_srccopy [6]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file1_ascii_srccopy [5]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_default_copy [25]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_ascii_copy [25]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_binary_copy [27]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy1 [26]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy2 [27]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy3 [26]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy4 [25]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy5 [28]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy6 [19]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy7 [6]@or_broken@Skipping file size check on NT4
|
|
Passed: file size check on file123_mixed_copy8 [7]@or_broken@Skipping file size check on NT4
|
|
Passed: errorlevel invalid check 1
|
|
Passed: Did not find dir1\file1
|
|
Passed: errorlevel invalid check 2
|
|
Passed: errorlevel invalid check 3
|
|
------------ 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
|
|
@drive@@path@foobar\foobar2
|
|
globalval
|
|
@drive@@path@foobar
|
|
globalval
|
|
@drive@@path@foobar
|
|
--- setlocal with no corresponding endlocal
|
|
globalval
|
|
localval
|
|
@drive@@path@foobar\foobar2
|
|
globalval
|
|
@drive@@path@foobar
|
|
--- setlocal within same batch program
|
|
Var1 ok 1
|
|
Var2 ok 2
|
|
Var3 ok 3
|
|
Directory is ok 1
|
|
Var1 ok 1
|
|
Var2 ok 2
|
|
Var3 ok 3
|
|
Directory is ok 2
|
|
Var1 ok 1
|
|
Var2 ok 2
|
|
Var3 ok 3
|
|
Directory is ok 3
|
|
--- Mismatched set and end locals
|
|
--- Extra setlocal in called batch
|
|
value2
|
|
2set1endvalue1
|
|
@drive@@path@foobar\foodir3
|
|
Finished:
|
|
value2
|
|
@drive@@path@foobar\foodir2
|
|
value1
|
|
@drive@@path@foobar
|
|
--- Extra endlocal in called batch
|
|
value2
|
|
value2
|
|
@drive@@path@foobar\foodir2
|
|
value2
|
|
@drive@@path@foobar\foodir2
|
|
Finished:
|
|
value2
|
|
@drive@@path@foobar\foodir2
|
|
value1
|
|
@drive@@path@foobar
|
|
--- endlocal in called function rather than batch pgm is ineffective
|
|
2
|
|
2
|
|
1
|
|
2
|
|
1
|
|
2
|
|
1
|
|
1
|
|
------------ 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 colon and no leading space worked
|
|
goto with a leading space worked
|
|
goto with a leading tab worked
|
|
goto with a following space worked
|
|
goto with following amphersands worked
|
|
goto with redirections worked
|
|
Ignoring double colons worked
|
|
label with mixed whitespace and no echo worked
|
|
Correctly ignored trailing information
|
|
Begin:
|
|
..First sub
|
|
..First sub
|
|
Middle:
|
|
..Third sub
|
|
..Third sub
|
|
Near end:
|
|
..Fourth sub
|
|
..Fourth sub
|
|
At end:
|
|
..First sub
|
|
..First sub
|
|
Finished
|
|
------------ Testing PATH ------------
|
|
PATH=original
|
|
PATH=try2
|
|
PATH=try3
|
|
------------ Testing start /W ------------
|
|
start /W seems to really wait
|
|
------------ Testing changing the drive letter ----------
|
|
Normal:
|
|
Normal+space
|
|
Normal+space+garbage
|
|
Quoted should fail
|
|
Normal+tab
|
|
Normal+tab+garbage
|
|
------------ Testing combined CALLs/GOTOs ------------
|
|
world
|
|
cheball
|
|
barbare
|
|
bar
|
|
foo
|
|
baz
|
|
cheball
|
|
barbare
|