| |
| @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@' |
| 'value@space@' |
| 'value' |
| 'jim fred' |
| '"jim" fred' |
| 'jim fred' |
| 'jim' |
| 'apple"banana"grape' |
| ------------ 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' |
| '' |
| @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@'' |
| @drive@@path@C D |
| @drive@@path@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: @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 |
| ------------ 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 |
| --- Complex wildcards unix and windows slash |
| Windows slashs, valid path |
| ASIS: foobar\baz\bazbaz |
| WC : foobar\baz\bazbaz |
| Windows slashs, invalid path |
| ASIS: foobar\jim\bazbaz |
| Unix slashs, valid path |
| ASIS: foobar/baz/bazbaz |
| WC : bazbaz |
| Unix slashs, 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 |
| --- 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 |
| @drive@@path@foobar |
| @pwd@ |
| @drive@@path@foobar\baz |
| @drive@@path@foobar |
| @drive@@path@foobar |
| @pwd@ |
| @drive@@path@foobar |
| @pwd@ |
| ------------ Testing attrib ------------ |
| A @drive@@path@foobar\foo@or_broken@A @drive@@path@foobar\foo@or_broken@A I @drive@@path@foobar\foo |
| --- read-only attribute |
| A R @drive@@path@foobar\foo@or_broken@A R @drive@@path@foobar\foo@or_broken@A R I @drive@@path@foobar\foo |
| foo |
| foo original contents |
| Read-only file not deleted |
| Read-only file forcibly deleted |
| --- recursive behaviour |
| A @drive@@path@foobar\baz\level2@or_broken@A @drive@@path@foobar\baz\level2@or_broken@A I @drive@@path@foobar\baz\level2 |
| A R @drive@@path@foobar\level1@or_broken@A R @drive@@path@foobar\level1@or_broken@A R I @drive@@path@foobar\level1 |
| A R @drive@@path@foobar\baz\level2@or_broken@A R @drive@@path@foobar\baz\level2@or_broken@A R I @drive@@path@foobar\baz\level2 |
| A @drive@@path@foobar\bar@or_broken@A @drive@@path@foobar\bar@or_broken@A I @drive@@path@foobar\bar |
| --- folders processing |
| @drive@@path@foobar@or_broken@ @drive@@path@foobar@or_broken@ I @drive@@path@foobar |
| @todo_wine@ R @drive@@path@foobar\baz@or_broken@ R @drive@@path@foobar\baz@or_broken@ @drive@@path@foobar\baz@or_broken@ R I @drive@@path@foobar\baz |
| A @drive@@path@foobar\baz\toto@or_broken@A @drive@@path@foobar\baz\toto@or_broken@A I @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 |
| @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 |
| @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 |
| ------------ Testing PATH ------------ |
| PATH=original |
| PATH=try2 |
| PATH=try3 |
| ------------ Testing combined CALLs/GOTOs ------------ |
| world |
| cheball |
| barbare |
| bar |
| foo |
| baz |
| cheball |
| barbare |