From: Eric Pouech epouech@codeweavers.com
Focusing on POPD and RMDIR/RD that don't set errorlevel in case of failure.
Signed-off-by: Eric Pouech epouech@codeweavers.com --- programs/cmd/tests/test_builtins.cmd | 25 ++++++++++++++++++++++++ programs/cmd/tests/test_builtins.cmd.exp | 15 ++++++++++++++ 2 files changed, 40 insertions(+)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index d5f8cef8eab..fed8c20c587 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -458,6 +458,7 @@ call :setError 0 &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel! call :setError 33 &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel! call :setError 666 & (echo foo &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) call :setError 666 & (echo foo >> h:\i\dont\exist\at\all.txt &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +call :setError 666 & echo foo >> h:\i\dont\exist\at\all.txt & echo ERRORLEVEL !errorlevel! call :setError 666 & ((if 1==1 echo "">NUL) &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) call :setError 666 & ((if 1==0 echo "">NUL) &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) call :setError 666 & ((if 1==1 (call :setError 33)) &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) @@ -550,6 +551,7 @@ call :setError 666 & (pushd abc &&echo SUCCESS !errorlevel!||echo FAILURE !error call :setError 666 & (pushd abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) call :setError 666 & (popd abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) call :setError 666 & (popd &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +call :setError 666 & popd & echo ERRORLEVEL !errorlevel! cd .. && rd /q /s foo
echo --- success/failure for DIR command @@ -565,6 +567,29 @@ call :setError 666 & (dir zzz fileA >NUL &&echo SUCCESS !errorlevel!||echo FAILU call :setError 666 & (dir dir\zzz >NUL &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) call :setError 666 & (dir file* >NUL &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) cd .. && rd /q /s foo +echo --- success/failure for RMDIR/RD command +mkdir foo & cd foo +mkdir abc +call :setError 666 & (rmdir &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +echo "">abc\abc +call :setError 666 & (rmdir abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +call :setError 666 & (rmdir abc\abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +erase abc\abc +call :setError 666 & (rmdir abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +call :setError 666 & (rmdir abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +call :setError 666 & (rmdir @:\cba\abc &&echo SUCCESS !errorlevel!||echo FAILURE !errorlevel!) +cd .. && rd /q /s foo +mkdir foo & cd foo +mkdir abc +call :setError 666 & rmdir & echo ERRORLEVEL !errorlevel! +echo "">abc\abc +call :setError 666 & rmdir abc & echo ERRORLEVEL !errorlevel! +call :setError 666 & rmdir abc\abc & echo ERRORLEVEL !errorlevel! +erase abc\abc +call :setError 666 & rmdir abc & echo ERRORLEVEL !errorlevel! +call :setError 666 & rmdir abc & echo ERRORLEVEL !errorlevel! +call :setError 666 & rmdir @:\cba\abc & echo ERRORLEVEL !errorlevel! +cd .. && rd /q /s foo
echo --- setlocal DisableDelayedExpansion diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index eb6abb14dea..dc2288742da 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -456,6 +456,7 @@ FAILURE 33 foo@space@ SUCCESS 666 FAILURE 1 +@todo_wine@ERRORLEVEL 666 SUCCESS 666 SUCCESS 666 FAILURE 33 @@ -513,6 +514,7 @@ SUCCESS 0 FAILURE 1 SUCCESS 666 @todo_wine@FAILURE 1 +ERRORLEVEL 666 --- success/failure for DIR command FAILURE 1 FAILURE 1 @@ -520,6 +522,19 @@ SUCCESS 0 SUCCESS 0 FAILURE 1 SUCCESS 0 +--- success/failure for RMDIR/RD command +@todo_wine@FAILURE 1 +@todo_wine@FAILURE 145 +@todo_wine@FAILURE 267 +SUCCESS 666 +@todo_wine@FAILURE 2 +@todo_wine@FAILURE 3 +ERRORLEVEL 666 +ERRORLEVEL 666 +ERRORLEVEL 666 +ERRORLEVEL 666 +ERRORLEVEL 666 +ERRORLEVEL 666 @todo_wine@--- ------------ Testing 'set' ------------ 1