https://git.reactos.org/?p=reactos.git;a=commitdiff;h=58aee30e9967642d82d2a4...
commit 58aee30e9967642d82d2a425e7e7d3e4c759adc2 Author: Amine Khaldi amine.khaldi@reactos.org AuthorDate: Fri Jan 25 13:15:06 2019 +0100 Commit: Amine Khaldi amine.khaldi@reactos.org CommitDate: Fri Jan 25 13:15:06 2019 +0100
[CMD_WINETEST] Sync with Wine Staging 4.0. CORE-15682 --- modules/rostests/winetests/cmd/batch.c | 19 +- modules/rostests/winetests/cmd/test_builtins.cmd | 299 ++++++++++++++++++++- .../rostests/winetests/cmd/test_builtins.cmd.exp | 122 +++++++-- 3 files changed, 416 insertions(+), 24 deletions(-)
diff --git a/modules/rostests/winetests/cmd/batch.c b/modules/rostests/winetests/cmd/batch.c index 71966090e9..162e9cfa15 100644 --- a/modules/rostests/winetests/cmd/batch.c +++ b/modules/rostests/winetests/cmd/batch.c @@ -25,7 +25,7 @@ static char workdir[MAX_PATH]; static DWORD workdir_len; static char drive[2]; -static const DWORD drive_len = sizeof(drive)/sizeof(drive[0]); +static const DWORD drive_len = ARRAY_SIZE(drive); static char path[MAX_PATH]; static DWORD path_len; static char shortpath[MAX_PATH]; @@ -165,6 +165,7 @@ static const char *compare_line(const char *out_line, const char *out_end, const static const char path_cmd[] = {'@','p','a','t','h','@'}; static const char shortpath_cmd[] = {'@','s','h','o','r','t','p','a','t','h','@'}; static const char space_cmd[] = {'@','s','p','a','c','e','@'}; + static const char spaces_cmd[] = {'@','s','p','a','c','e','s','@'}; static const char tab_cmd[] = {'@','t','a','b','@'}; static const char or_broken_cmd[] = {'@','o','r','_','b','r','o','k','e','n','@'};
@@ -223,6 +224,15 @@ static const char *compare_line(const char *out_line, const char *out_end, const } else { err = out_end; } + }else if(exp_ptr+sizeof(spaces_cmd) <= exp_end + && !memcmp(exp_ptr, spaces_cmd, sizeof(spaces_cmd))) { + exp_ptr += sizeof(spaces_cmd); + if(out_ptr < out_end && *out_ptr == ' ') { + while (out_ptr < out_end && *out_ptr == ' ') out_ptr++; + continue; + } else { + err = out_end; + } }else if(exp_ptr+sizeof(tab_cmd) <= exp_end && !memcmp(exp_ptr, tab_cmd, sizeof(tab_cmd))) { exp_ptr += sizeof(tab_cmd); @@ -250,10 +260,8 @@ static const char *compare_line(const char *out_line, const char *out_end, const
while(exp_ptr+sizeof(or_broken_cmd) <= exp_end && memcmp(exp_ptr, or_broken_cmd, sizeof(or_broken_cmd))) exp_ptr++; - if(!exp_ptr) - return err; - exp_ptr += sizeof(or_broken_cmd); + if (exp_ptr > exp_end) return err; out_ptr = out_line; err = NULL; continue; @@ -469,8 +477,7 @@ START_TEST(batch) } else { path_len = 1; /* \ */ } - shortpath_len = GetShortPathNameA(path, shortpath, - sizeof(shortpath)/sizeof(shortpath[0])); + shortpath_len = GetShortPathNameA(path, shortpath, ARRAY_SIZE(shortpath));
argc = winetest_get_mainargs(&argv); if(argc > 2) diff --git a/modules/rostests/winetests/cmd/test_builtins.cmd b/modules/rostests/winetests/cmd/test_builtins.cmd index f6846283c7..f4dfc9f26d 100644 --- a/modules/rostests/winetests/cmd/test_builtins.cmd +++ b/modules/rostests/winetests/cmd/test_builtins.cmd @@ -179,6 +179,8 @@ if exist foo (type foo) else echo not supported echo --- redirections within IF statements if 1==1 echo foo1>bar type bar & del bar +if 1==1 echo foo2>>bar +type bar & del bar echo ----- if 1==1 (echo foo2>bar) else echo baz2>bar type bar & del bar @@ -418,6 +420,7 @@ if 1==1 (echo n1) else echo n2|echo n3 if 1==1 (echo o1) else echo o2&&echo o3 if 1==1 (echo p1) else echo p2||echo p3 if 1==1 (echo q1) else echo q2&echo q3 +echo --- echo --- chain else (if false) if 1==0 echo a1 else echo a2 if 1==0 echo b1|echo b2 else echo b3 @@ -506,6 +509,65 @@ rem Only the final quote ends the string set "WINE_FOO=apple"banana"grape"orange echo '%WINE_FOO%' set WINE_FOO= +rem set PATH must work with quotes +set PATH_BACKUP=%PATH% +mkdir folder +mkdir "fol;der" +echo echo I'm here! > "fol;der\sub1.bat" +echo echo I'm here! > folder\sub1.bat +set PATH=nothing;"fol;der" +call sub1 +set PATH="folder +call sub1 +set PATH=folder" +call sub1 +del "fol;der\sub1.bat" +del folder\sub1.bat +rmdir "fol;der" +rmdir folder +PATH=%PATH_BACKUP% + +echo ------------ Testing 'choice' ------------ + +rem Windows XP and Windows 2000 do not come with choice +rem echo is used for @or_broken@ formatting +choice /C:ABC /M "Example message" /D A /T:0 +if %ERRORLEVEL% EQU 9009 ( + echo choice unavailable +) +echo %ERRORLEVEL% +choice /C ABC "/M:Example message" /D:B /T 0 +if %ERRORLEVEL% EQU 9009 ( + echo choice unavailable +) +echo %ERRORLEVEL% +choice /C def /D:f /T:0 +if %ERRORLEVEL% EQU 9009 ( + echo choice unavailable +) +echo %ERRORLEVEL% +REM If a pipe fails due to a nonexistent command +REM it will stop the whole program's execution +if %ERRORLEVEL% NEQ 9009 ( + echo Y | choice /C ABCXYZ /D A /T 2 +) +if %ERRORLEVEL% EQU 9009 ( + echo choice unavailable +) +echo %ERRORLEVEL% +choice /C ABC /N /D A /T 0 +if %ERRORLEVEL% EQU 9009 ( + echo choice unavailable +) +echo %ERRORLEVEL% +choice /C abcABC /CS /D:A /T:0 +if %ERRORLEVEL% EQU 9009 ( + echo choice unavailable +) +echo %ERRORLEVEL% +rem intentional error +choice /C abcABC /D:A /T:0 >NUL 2>NUL +echo %ERRORLEVEL%
echo ------------ Testing variable expansion ------------ call :setError 0 @@ -667,6 +729,15 @@ echo '%~xs1' goto :eof :endEchoFuns
+echo ------------ Testing parameter zero ------------ +call :func parm1 parm2 +goto :endParm0 +:func +echo %~0 %~1 +echo [%0] [%~d0] [%~p0] [%~n0] [%~x0] [%~s0] +goto :EOF +:endParm0 + echo ------------ Testing variable delayed expansion ------------ rem NT4 doesn't support this echo --- default mode (load-time expansion) @@ -907,6 +978,13 @@ if %elseIF% == 1 ( ) else ( echo else if seems to be broken ) +if "x" == "a" ( + echo broken1 +) else ( + echo expected1 + if "y" == "b" echo broken2 + echo expected post-embedded if +) echo --- case sensitivity with and without /i option if bar==BAR echo if does not default to case sensitivity if not bar==BAR echo if seems to default to case sensitivity @@ -979,6 +1057,69 @@ for %%i in (%WINE_STR_PARMS%) do ( for %%i in (%WINE_STR_PARMS%) do ( for %%j in (%WINE_STR_PARMS%) do ( call :GTRtest %%i %%j)) + +echo ------------ Testing if/exist ------------ +mkdir subdir +echo something>subdir\bar +echo something else>foo +if exist foo ( + echo exist explicit works +) else ( + echo ERROR exist explicit broken +) +if exist bar ( + echo ERROR exist explicit unknown file broken +) else ( + echo exist explicit unknown file works +) +if exist subdir\bar ( + echo exist explicit in subdir works +) else ( + echo ERROR exist explicit in subdir broken +) +if exist fo* ( + echo exist simple wildcard works +) else ( + echo ERROR exist simple wildcard broken +) +if exist subdir\ba* ( + echo exist wildcard works +) else ( + echo ERROR exist wildcard broken +) +if not exist subdir\ba* ( + echo ERROR negate exist wildcard broken +) else ( + echo negate exist wildcard works +) +if exist idontexist\ba* ( + echo ERROR exist wildcard bad subdir broken +) else ( + echo exist wildcard bad subdir broken works +) +if exist subdir ( + echo exist subdir ok +) else ( + echo ERROR exist subdir not working +) +if exist subdir. ( + echo exist subdir with . ok +) else ( + echo ERROR exist subdir with . not working +) +if exist subdir\ ( + echo exist subdir with \ ok +) else ( + echo ERROR exist subdir with \ not working +) +if exist "subdir" ( + echo exist subdir with \ and quotes ok +) else ( + echo ERROR exist subdir with \ and quotes not working +) +del foo subdir\bar +rd subdir + echo ------ for numbers if -1 LSS 1 (echo negative numbers handled) if not -1 LSS -10 (echo negative numbers handled) @@ -1112,9 +1253,16 @@ mkdir foobar & cd foobar mkdir foo mkdir bar mkdir baz +mkdir pop echo > bazbaz echo --- basic wildcards for %%i in (ba*) do echo %%i +echo --- wildcards in subdirs +echo something>pop\bar1 +echo something>pop\bar2.txt +echo something>pop\bar3 +for %%f in (pop\ba*) do ( call echo %%f ) +rmdir /s/q pop echo --- for /d for /d %%i in (baz foo bar) do echo %%i 2>&1 rem Confirm we don't match files: @@ -1321,6 +1469,45 @@ for /L %%i in (2,2,1) do ( echo %%i echo FAILED ) +echo --- rems inside for loops +for /f %%i IN ("hello") DO ( + REM foo|echo ERROR unexpected execution 1 + @REM foo|echo ERROR unexpected execution 2 + @ REM foo|echo ERROR unexpected execution 3 +) +echo --- ifs inside for loops +for %%i in (test) do ( + echo a1 + if 1==1 ( + echo b1 + ) else ( + echo c1 + ) + echo d1 +) +for %%i in (test) do ( + echo a2 + if 1==1 ( + echo b2 + ) else echo c2 + echo d2 +) +for %%i in (test) do ( + echo a3 + if 1==0 ( + echo b3 + ) else echo c3 + echo d3 +) +for %%i in (test) do ( + echo a4 + if 1==0 ( + echo b4 + ) else ( + echo c4 + ) + echo d4 +) echo --- set /a goto :testseta
@@ -1563,8 +1750,11 @@ mkdir foobar & cd foobar echo ------ string argument rem NT4 does not support usebackq for /F %%i in ("a b c") do echo %%i +for /F %%i in ( "a b c" ) do echo X%%iX for /f usebackq %%i in ('a b c') do echo %%i>output_file if not exist output_file (echo no output) else (type output_file & del output_file) +for /f usebackq %%i in ( 'a b c' ) do echo X%%iX>output_file +if not exist output_file (echo no output) else (type output_file & del output_file) for /f %%i in ("a ") do echo %%i for /f usebackq %%i in ('a ') do echo %%i>output_file if not exist output_file (echo no output) else (type output_file & del output_file) @@ -1614,9 +1804,13 @@ if "%CD%"=="" goto :SkipFORFcmdNT4 for /f %%i in ('echo.Passed1') do echo %%i for /f "usebackq" %%i in (`echo.Passed2`) do echo %%i for /f usebackq %%i in (`echo.Passed3`) do echo %%i +for /f "usebackq" %%i in (`"c:\windows\system32\cmd.exe" /C echo Passed4`) do echo %%i +for /f "usebackq" %%i in (`""c:\windows\system32\cmd.exe" /C echo Passed5"`) do echo %%i +for /f %%i in ( 'echo.Passed6' ) do echo %%i +for /f "usebackq" %%i in ( `echo.Passed7` ) do echo %%i goto :ContinueFORF :SkipFORFcmdNT4 -for /l %%i in (1,1,3) do echo Missing functionality - Broken%%i +for /l %%i in (1,1,7) do echo Missing functionality - Broken%%i :ContinueFORF rem FIXME: Rest not testable right now in wine: not implemented and would need rem preliminary grep-like program implementation (e.g. like findstr or fc) even @@ -1694,6 +1888,13 @@ for /f "tokens=1,2,3*" %%i in ("a b c d e f g") do echo h=%%h i=%%i j=%%j k=%%k for /f "tokens=1,1,3*" %%i in ("a b c d e f g") do echo h=%%h i=%%i j=%%j k=%%k l=%%l m=%%m n=%%n o=%%o for /f "tokens=2,2,3*" %%i in ("a b c d e f g") do echo h=%%h i=%%i j=%%j k=%%k l=%%l m=%%m n=%%n o=%%o for /f "tokens=3,2,3*" %%i in ("a b c d e f g") do echo h=%%h i=%%i j=%%j k=%%k l=%%l m=%%m n=%%n o=%%o +rem Special case tokens=* or tokens=n,* +echo 3.14>testfile +FOR /F "tokens=*" %%A IN (testfile) DO @echo 1:%%A,%%B +FOR /F "tokens=1*" %%A IN (testfile) DO @echo 2:%%A,%%B +FOR /F "tokens=2*" %%A IN (testfile) DO @echo 3:%%A,%%B +FOR /F "tokens=1,* delims=." %%A IN (testfile) DO @echo 4:%%A,%%B +del testfile cd .. rd /s/q foobar echo ------ parameter splitting @@ -1706,6 +1907,12 @@ goto :forFParameterSplittingEnd echo %~0 %~1 %~2 %~3 %~4 %~5 goto :eof :forFParameterSplittingEnd +echo 3.14>testfile +FOR /F "delims=. tokens=*" %%A IN (testfile) DO @echo 4:%%A,%%B +FOR /F "delims=. tokens=1*" %%A IN (testfile) DO @echo 5:%%A,%%B +FOR /F "delims=. tokens=2*" %%A IN (testfile) DO @echo 6:%%A,%%B +FOR /F "delims=. tokens=3*" %%A IN (testfile) DO @echo 7:%%A,%%B +del testfile
echo ------------ Testing del ------------ echo abc > file @@ -2977,6 +3184,57 @@ echo FAILURE at dest 10 :dest10:this is also ignored echo Correctly ignored trailing information
+rem Testing which label is reached when there are many options +echo Begin: +set nextlabel= +call :sub +set nextlabel=middle +goto :sub + +:sub +echo ..First sub +if not "%nextlabel%"=="" goto :%nextlabel% +goto :EOF + +:sub +echo ..Second sub +if not "%nextlabel%"=="" goto :%nextlabel% +goto :EOF + +:middle +echo Middle: +set nextlabel= +call :sub +set nextlabel=nearend +goto :sub + +:sub +echo ..Third sub +if not "%nextlabel%"=="" goto :%nextlabel% +goto :EOF + +:nearend +echo Near end: +set nextlabel= +call :sub +set nextlabel=end +goto :sub + +:sub +echo ..Fourth sub +if not "%nextlabel%"=="" goto :%nextlabel% +goto :EOF + +:end +echo At end: +set nextlabel= +call :sub +set nextlabel=done +goto :sub + +:done +echo Finished + echo ------------ Testing PATH ------------ set WINE_backup_path=%path% set path=original @@ -2988,6 +3246,45 @@ path set path=%WINE_backup_path% set WINE_backup_path=
+echo ------------ Testing start /W ------------ +echo start /W failed to wait>foobar.txt +start /W "" cmd /C "ping -n1 & echo start /W seems to really wait>foobar.txt"& type foobar.txt& del foobar.txt + +echo ------------ Testing changing the drive letter ---------- +pushd C:\ + +echo Normal: +call :setError 0 +C: +if errorlevel 1 echo Normal drive change failed + +echo Normal+space +call :setError 0 +C:@space@ +if errorlevel 1 echo Normal+space drive change failed + +echo Normal+space+garbage +call :setError 0 +C: garbage +if errorlevel 1 echo Normal+space+garbage drive change failed + +call :setError 0 +echo Quoted should fail +"C:" +if not errorlevel 1 echo quoted drive change unexpectedly worked + +echo Normal+tab +call :setError 0 +C:@tab@ +if errorlevel 1 echo Normal+tab drive change failed + +echo Normal+tab+garbage +call :setError 0 +C:@tab@garbagetab +if errorlevel 1 echo Normal+tab+garbage drive change failed + +popd + echo ------------ Testing combined CALLs/GOTOs ------------ echo @echo off>foo.cmd echo goto :eof>>foot.cmd diff --git a/modules/rostests/winetests/cmd/test_builtins.cmd.exp b/modules/rostests/winetests/cmd/test_builtins.cmd.exp index 5512fee072..d78d91a6cf 100644 --- a/modules/rostests/winetests/cmd/test_builtins.cmd.exp +++ b/modules/rostests/winetests/cmd/test_builtins.cmd.exp @@ -205,7 +205,8 @@ 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 +foo1 +foo2 ----- foo2 foo3 @@ -428,8 +429,9 @@ n1 o1 p1 q1 +@todo_wine@--- --- chain else (if false) -@todo_wine@j3 +j3 --- k3 l3 @@ -474,6 +476,23 @@ foo '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@ @@ -526,9 +545,9 @@ 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@@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' @@ -562,9 +581,9 @@ 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@@shortpath@R S'@or_broken@'' +'@drive@@shortpath@T'@or_broken@'' +'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@'' @drive@@path@ @drive@@path@ @drive@ @@ -573,6 +592,9 @@ N @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 @@ -657,6 +679,8 @@ 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 --- case sensitivity with and without /i option if seems to default to case sensitivity if /i seems to work @@ -768,6 +792,18 @@ 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 @@ -909,6 +945,10 @@ 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@ @@ -970,6 +1010,20 @@ ErrorLevel 0 -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 @@ -1141,7 +1195,9 @@ 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 @@ -1177,6 +1233,10 @@ c 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 @@ -1222,9 +1282,15 @@ 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 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 @@ -1340,22 +1406,22 @@ bar\baz removed @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 +A@spaces@@drive@@path@foobar\foo@or_broken@A I@spaces@@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 +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 @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 +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 - @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 +@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 @@ -1570,10 +1636,32 @@ 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