From 7749be1236b6d430478bc68771842115242c932b Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Mon, 23 Mar 2009 14:57:10 +0000 Subject: [PATCH] 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 --- tests/runtests.bat | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/tests/runtests.bat b/tests/runtests.bat index 9ff4f2b85f..08362a5b2e 100644 --- a/tests/runtests.bat +++ b/tests/runtests.bat @@ -3,6 +3,14 @@ REM Runs wxWidgets CppUnit tests REM This script is used to return the correct return value to the caller 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 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 @( if exist %%x\test.exe ( - %%x\test.exe - if %errorlevel% GEQ 1 set failure=1 + %%x\test.exe >tmp + + 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 echo. @@ -25,13 +40,26 @@ for /d %%x in (*) do @( ) if exist %%x\test_gui.exe ( - %%x\test_gui.exe - if %errorlevel% GEQ 1 set failure=1 + %%x\test_gui.exe >tmp + + 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 -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: set failure=