1320 lines
27 KiB
Plaintext
1320 lines
27 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 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@
|
|
noecho1
|
|
noecho2
|
|
echo3
|
|
------------ 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 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
|
|
@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 ------------
|
|
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 '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@'
|
|
------------ 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
|
|
'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@''
|
|
@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@''
|
|
''@or_broken@'%~ai'
|
|
''@or_broken@'%~ai'
|
|
'--a------'@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@''
|
|
@pwd@\C D
|
|
@pwd@\E
|
|
@drive@
|
|
@drive@
|
|
@path@
|
|
@path@
|
|
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@''
|
|
@drive@@path@
|
|
@drive@@path@
|
|
@drive@
|
|
@drive@
|
|
@drive@
|
|
@drive@
|
|
''
|
|
'.eh'@or_broken@''
|
|
------------ 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: @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@\foobar\bar bak
|
|
@pwd@\foobar\bar bak
|
|
@pwd@
|
|
@pwd@\foobar
|
|
------------ Testing type ------------
|
|
|
|
@pwd@>type foobaz@space@
|
|
bar
|
|
|
|
@pwd@>echo ---@space@
|
|
---
|
|
bar
|
|
---1
|
|
bar
|
|
---2
|
|
bar
|
|
---3
|
|
------------ 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
|
|
--- 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
|
|
------ 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"
|
|
------------ 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
|
|
--- 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
|
|
--- 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
|
|
--- 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
|
|
a@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
|
|
------ 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
|
|
@todo_wine@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
|
|
------------ 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
|
|
@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
|
|
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
|
|
@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
|
|
A @pwd@\foobar\baz\level2@or_broken@A @pwd@\foobar\baz\level2@or_broken@A I @pwd@\foobar\baz\level2
|
|
A R @pwd@\foobar\level1@or_broken@A R @pwd@\foobar\level1@or_broken@A R I @pwd@\foobar\level1
|
|
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
|
|
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@!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
|
|
@todo_wine@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_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
|
|
@pwd@\foobar\foobar2
|
|
globalval
|
|
@pwd@\foobar
|
|
globalval
|
|
@pwd@\foobar
|
|
--- setlocal with no corresponding endlocal
|
|
globalval
|
|
localval
|
|
@pwd@\foobar\foobar2
|
|
globalval
|
|
@pwd@\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
|
|
@pwd@\foobar\foodir3
|
|
Finished:
|
|
value2
|
|
@pwd@\foobar\foodir2
|
|
value1
|
|
@pwd@\foobar
|
|
--- Extra endlocal in called batch
|
|
value2
|
|
value2
|
|
@pwd@\foobar\foodir2
|
|
value2
|
|
@pwd@\foobar\foodir2
|
|
Finished:
|
|
value2
|
|
@pwd@\foobar\foodir2
|
|
value1
|
|
@pwd@\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
|
|
------------ Testing PATH ------------
|
|
PATH=original
|
|
PATH=try2
|
|
PATH=try3
|
|
------------ Testing combined CALLs/GOTOs ------------
|
|
world
|
|
cheball
|
|
barbare
|
|
bar
|
|
foo
|
|
baz
|
|
cheball
|
|
barbare
|