adds proper detection of tests success/failure; clear that "error level" != "return code"

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59774 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi 2009-03-23 14:57:10 +00:00
parent c8551c294d
commit 7749be1236

View File

@ -3,6 +3,14 @@
REM Runs wxWidgets CppUnit tests REM Runs wxWidgets CppUnit tests
REM This script is used to return the correct return value to the caller REM This script is used to return the correct return value to the caller
REM which is required by Buildbot to recognize failures. REM which is required by Buildbot to recognize failures.
REM Note that in DOS error level is not the return code of the previous
REM command; it is for (some!) built-in DOS commands like FIND but
REM in general it's not. Thus to get the return code of the test utility
REM we need some hack; see the guide:
REM http://www.infionline.net/~wtnewton/batch/batguide.html
REM for general info about DOS batch files.
REM Author: Francesco Montorsi
REM $Id$ REM $Id$
rem set the path for running the tests if they use DLL build of wx rem set the path for running the tests if they use DLL build of wx
@ -12,8 +20,15 @@ set failure=0
for /d %%x in (*) do @( for /d %%x in (*) do @(
if exist %%x\test.exe ( if exist %%x\test.exe (
%%x\test.exe %%x\test.exe >tmp
if %errorlevel% GEQ 1 set failure=1
REM show the output of the test in the buildbot log:
type tmp
REM hack to understand if the tests succeeded or not
REM (failure=1 is set if "OK" does not appear in the test output)
type tmp | find "OK" >NUL
if ERRORLEVEL 1 set failure=1
REM separe the output of the test we just executed from the next one REM separe the output of the test we just executed from the next one
echo. echo.
@ -25,13 +40,26 @@ for /d %%x in (*) do @(
) )
if exist %%x\test_gui.exe ( if exist %%x\test_gui.exe (
%%x\test_gui.exe %%x\test_gui.exe >tmp
if %errorlevel% GEQ 1 set failure=1
REM show the output of the test in the buildbot log:
type tmp
REM hack to understand if the tests succeeded or not
REM (failure=1 is set if "OK" does not appear in the test output)
type tmp | find "OK" >NUL
if ERRORLEVEL 1 set failure=1
) )
) )
REM exit with code 1 if any of the test failed REM exit with code 1 if any of the test failed
if %failure% EQU 1 exit 1 del tmp
if %failure% EQU 1 (
echo.
echo One or more test failed
echo.
exit 1
)
REM remove the failure env var: REM remove the failure env var:
set failure= set failure=