Newer
Older
@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 .@space@
.
@pwd@>echo.word
word
@pwd@>echo .word@space@
.word
@pwd@>echo :@space@
:
@pwd@>echo:word
@pwd@>echo :word@space@
:word
Frédéric Delanoy
committed
@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@
@pwd@>echo@tab@word@space@@tab@@space@
@pwd@>echo@tab@word@tab@@space@@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@
@pwd@>echo @tab@ on @space@@space@
noecho1
noecho2
echo3
------------ Testing 'echo' [OFF] ------------
word
'singlequotedword'
"doublequotedword"
at-echoed-word
"/?"
.
Frédéric Delanoy
committed
on again
word@space@
word@space@@space@
word
word@space@@tab@
word@tab@@space@
word
@tab@word
@space@@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]{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 ------------
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- redirections within IF statements
@todo_wine@foo1
Francois Gouget
committed
-----
foo2
foo3
file does not exist, ok
------------ Testing circumflex escape character ------------
hello, world
hello, world
hell^o, world
hell^o, world
helloworld
hello
world
hello
finished
foo | echo bar
foo & echo bar
bak &
baz@space@
0@or_broken@1
foo > foo
<
ffoof
FOO=bar | baz
0
FOO=bar ^| baz
bar | baz
0
------------ Testing 'set' ------------
FOOBAR= bar
FOOBAR = baz2
Frédéric Delanoy
committed
FOOBAR = baz2
FOOBAR not defined
1
bar
foobar
FOO not defined
BAZ=bazbaz
bazbaz
Dan Kegel
committed
set "FOO=bar" should not include the quotes in the variable value
bar
foo
''
------------ Testing variable expansion ------------
~dp0 should be directory containing batch file
@pwd@\
@pwd@\
Frédéric Delanoy
committed
CD value @pwd@@or_broken@CD value@space@
%
P
P
S
P
PS
ERRORLEVEL
0
00
------------ Testing variable substrings ------------
'ty'@or_broken@''
't'@or_broken@''
ert@or_broken@qwerty
e@or_broken@qwerty
''@or_broken@'qwerty'
r@or_broken@qwerty
------------ Testing variable substitution ------------
Francois Gouget
committed
--- in FOR variables
'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'
Francois Gouget
committed
--- in parameters
@pwd@\E
@drive@
@drive@
@path@
@path@
'.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 ------------
Francois Gouget
committed
--- default mode (load-time expansion)
foo
!FOO!
foo
foo
Francois Gouget
committed
--- 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!
Francois Gouget
committed
--- using /V cmd flag
foo
@todo_wine@foo@or_broken@!FOO!
foo
!FOO!
------------ Testing conditional execution ------------
Francois Gouget
committed
--- unconditional ampersand
foo1
bar2@space@
foo2
Francois Gouget
committed
--- on success conditional and
@todo_wine@foo3 not created
bar4@space@
foo4
Francois Gouget
committed
--- 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@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
------------ Testing type ------------
@pwd@>type foobaz@space@
bar
Francois Gouget
committed
@pwd@>echo ---@space@
---
---1
bar
---2
bar
---3
------------ Testing NUL ------------
bar
bar
bar
NUL
@todo_wine@foo created
------------ Testing if/else ------------
--- if/else should work with blocks
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
non equal
non 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
AB LSS B
AA LSS B
A LSS AB
AA LSS AB
A LSS BA
B LSS BA
AB LSS BA
AA LSS BA
A LSS AA
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
B LEQ B
AB LEQ B
AA LEQ B
A LEQ AB
AB LEQ AB
AA LEQ AB
A LEQ BA
B LEQ BA
AB LEQ BA
BA LEQ BA
AA LEQ BA
A LEQ AA
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
B NEQ A
AB NEQ A
BA NEQ A
AA NEQ A
A NEQ B
AB NEQ B
BA NEQ B
AA NEQ B
A NEQ AB
B NEQ AB
BA NEQ AB
AA NEQ AB
A NEQ BA
B NEQ BA
AB NEQ BA
AA NEQ BA
A NEQ AA
B NEQ AA
AB NEQ AA
BA NEQ AA
A GEQ A
B GEQ A
AB GEQ A
BA GEQ A
AA GEQ A
B GEQ B
BA GEQ B
B GEQ AB
AB GEQ AB
BA GEQ AB
BA GEQ BA
B GEQ AA
AB GEQ AA
BA GEQ AA
AA GEQ AA
B GTR A
AB GTR A
BA GTR A
AA GTR A
BA GTR B
B GTR AB
BA GTR AB
B GTR AA
AB GTR AA
BA GTR AA
------ 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
1 LSS 10
9 LSS 10
0 LSS 9
1 LSS 9
0 LEQ 0
0 LEQ 1
1 LEQ 1
0 LEQ 10
1 LEQ 10
10 LEQ 10
9 LEQ 10
0 LEQ 9
1 LEQ 9
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
1 NEQ 0
10 NEQ 0
9 NEQ 0
0 NEQ 1
10 NEQ 1
9 NEQ 1
0 NEQ 10
1 NEQ 10
9 NEQ 10
0 NEQ 9
1 NEQ 9
10 NEQ 9
0 GEQ 0
1 GEQ 0
10 GEQ 0
9 GEQ 0
1 GEQ 1
10 GEQ 1
9 GEQ 1
10 GEQ 10
10 GEQ 9
9 GEQ 9
1 GTR 0
10 GTR 0
9 GTR 0
10 GTR 1
9 GTR 1
10 GTR 9
Frédéric Delanoy
committed
------ 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 ------------
Francois Gouget
committed
--- plain FOR
%I
%I
%I
%j
%j
%j
1
4
1
A
B
C
`echo
A
B`
'echo
A
B'
Francois Gouget
committed
--- imbricated FORs
X Y
X Y
A C
A D
B C
B D
A C
A D
B C
B D
Francois Gouget
committed
--- basic wildcards
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- for /a
------ individual operations
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
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
Francois Gouget
committed
------ 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
Francois Gouget
committed
------ octal and hexadecimal
@todo_wine@3@or_broken@4
@todo_wine@18
@todo_wine@18
@todo_wine@15
Francois Gouget
committed
------ 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
Francois Gouget
committed
--- for /F
------ string argument
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
Francois Gouget
committed
------ fileset argument
--------- basic blank handling
Francois Gouget
committed
--------- multi-line with empty lines
Francois Gouget
committed
--------- 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
Francois Gouget
committed
------ eol option
and@or_broken@Broken NT4 functionality1
Line@or_broken@Broken NT4 functionality2
Line@or_broken@Broken NT4 functionality3
ad
z@y
no output
Francois Gouget
committed
------ delims option
a@space@
a d
a
C r
foo bar baz
Francois Gouget
committed
------ skip option
c
no output
no output
c
c
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 ------------
Dan Kegel
committed
del /q * succeeded on file1
del /q * succeeded on file2.dat
------------ Testing del /s ------------
------------ Testing rename ------------
Francois Gouget
committed
--- ren and rename are synonymous
foo renamed to bar
bar renamed to foo
Francois Gouget
committed
--- name collision
Francois Gouget
committed
--- rename read-only files
Francois Gouget
committed
--- rename directories
dir renamed
read-only dir renamed
Francois Gouget
committed
--- rename in other directory
rename impossible in other directory
original file still present
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- directory move
simple directory move succeeded
moving a directory to itself gives error; errlevel 1
Francois Gouget
committed
------ dir in dir move
Francois Gouget
committed
--- md and mkdir are synonymous
Francois Gouget
committed
--- creating an already existing directory/file must fail
Dan Kegel
committed
1
1
Francois Gouget
committed
--- multilevel path creation
Dan Kegel
committed
1
Francois Gouget
committed
--- trailing backslashes
Frédéric Delanoy
committed
0
dir created
0
Francois Gouget
committed
--- invalid chars
mkdir ? gives errorlevel 1
mkdir ?\foo gives errorlevel 1
mkdir foo\? gives errorlevel 1
Dan Kegel
committed
ok, foo created
mkdir foo\bar\? gives errorlevel 1
Dan Kegel
committed
ok, foo\bar created
Francois Gouget
committed
--- multiple directories at once
bar created
foobar created
bar\baz created
bazbaz created
zabzab created
Dan Kegel
committed
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 ------------
Francois Gouget
committed
--- popd is no-op when dir stack is empty
Francois Gouget
committed
--- pushing non-existing dir
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- 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
Francois Gouget
committed
--- 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 ------------
Francois Gouget
committed
--- setting association
---
Francois Gouget
committed
--- resetting association
---
Francois Gouget
committed
---
------------ Testing ftype ------------
Francois Gouget
committed
--- setting association
---
footype=foo_opencmd
.foo=footype
footype=foo_opencmd
+++
footype=foo_opencmd
Francois Gouget
committed
--- resetting association
@todo_wine@original value@or_broken@buggyXP@or_broken@!FOO!
------------ Testing CALL ------------
Francois Gouget
committed
--- external script
Frédéric Delanoy
committed
foo@space@
foo@space@@space@
foo bar@space@
foo ""@space@
"" bar@space@
Francois Gouget
committed
--- internal routines
Francois Gouget
committed
--- with builtins
0
foo created
Should expand foobaz
batfile
robinfile
1
1
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' '' '' '' ''
Frédéric Delanoy
committed
------------ Testing cmd invocation ------------
Francois Gouget
committed
--- a batch file can delete itself
Francois Gouget
committed
--- a batch file can alter itself
Frédéric Delanoy
committed
@todo_wine@bar
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
---------- 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 ------------
Francois Gouget
committed
--- enable/disable extensions
@todo_wine@ErrLev:@space@
ErrLev: 0
ErrLev: 0
@todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
ErrLev: 0
Francois Gouget
committed
--- setlocal with corresponding endlocal
Francois Gouget
committed
--- setlocal with no corresponding endlocal
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
@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 ------------
Frédéric Delanoy
committed
9009
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 PATH ------------
PATH=original
PATH=try2
PATH=try3
------------ Testing combined CALLs/GOTOs ------------
world
cheball
barbare
bar
foo
baz
cheball
barbare