cmd/tests: Test success/failure of commands.

The || and && operators to chain commands rely on the LHS command
to be successful (or unsucessful) to decide upon launching the RHS
command.

Unfortunately, success/failure is not always when errorlevel is
0 (non zero).

Some exmaples:
- if a redirection fails (eg. appending to a non existing file),
  the command (builtin/external) is always unsuccessful (and the
  error level is untouched,
- external command (when redirection is ok) is succesful when
  program exit code is zero,
- ditto for a call to a label inside the batch file, with
  the 'exit /b' parameter,
- it's way more complicated for builtins. Eg 'type' is unsuccessful
  on a non existing file, while 'dir' (on the same unexisting file)
  succeeds.

So start adding some tests about success / failure of some commands.

Signed-off-by: Eric Pouech <epouech@codeweavers.com>
This commit is contained in:
Eric Pouech 2024-05-05 09:08:23 +02:00 committed by Alexandre Julliard
parent 289c49ee21
commit 6f0e9e5e4e
2 changed files with 18 additions and 0 deletions

View file

@ -450,6 +450,15 @@ if 1==0 (echo o1) else echo o2&&echo o3
if 1==0 (echo p1) else echo p2||echo p3
echo ---
if 1==0 (echo q1) else echo q2&echo q3
echo ------------- Testing internal commands return codes
call :setError 0 &&echo SUCCESS||echo FAILURE %errorlevel%
call :setError 33 &&echo SUCCESS||echo FAILURE %errorlevel%
call :setError 666
echo foo &&echo SUCCESS||echo FAILURE %errorlevel%
echo foo >> h:\i\dont\exist\at\all.txt &&echo SUCCESS||echo FAILURE %errorlevel%
type NUL &&echo SUCCESS||echo FAILURE %errorlevel%
type h:\i\dont\exist\at\all.txt &&echo SUCCESS||echo FAILURE %errorlevel%
echo ---
echo ------------ Testing 'set' ------------
call :setError 0
rem Remove any WINE_FOO* WINE_BA* environment variables from shell before proceeding

View file

@ -449,6 +449,15 @@ p2
@todo_wine@---
q2
q3
------------- Testing internal commands return codes
SUCCESS
FAILURE 0
@todo_wine@foo@space@
@todo_wine@SUCCESS
@todo_wine@FAILURE 666
SUCCESS
@todo_wine@FAILURE 0
@todo_wine@---
------------ Testing 'set' ------------
1
0