@echo off
rem
rem $Id$
rem
rem A script for running the POCO testsuites.
rem
rem usage: runtests2 [-64] [-d ] [component [test]]
rem
rem component   : the component under test
rem test        : the test as part of the component

rem If the environment variable EXCLUDE_TESTS is set, containing
rem a space-separated list of project names (as found in the
rem components file), these tests will be skipped.
rem

setlocal EnableDelayedExpansion


set TESTRUNNERARGS=-all
set TESTCOMPONENTS='C:\Windows\System32\findstr.exe /R "." components'
set BINDIR=bin

if "%1"=="-64" (
  set BINDIR=bin64
  shift
)
if "%1" =="-d" (
  set DEBUG=d
  shift
)

set PATH=%POCO_BASE%\%BINDIR%;%PATH%
set IGNORE=-ignore %POCO_BASE%\cppignore.win

if not "%1" == "" (
  set TESTCOMPONENTS="%1"
  if not "%2" == "" (
    set TESTRUNNERARGS=%2
  )
)

set TESTRUNNER=TestSuite%DEBUG%.exe

set runs=0
set failures=0
set failedTests=
set status=0


for /f %%C in ( %TESTCOMPONENTS% ) do (
  set excluded=0
  for %%X in (%EXCLUDE_TESTS%) do (
    if "%%X"=="%%C" (
      set excluded=1
    )
  )
  if !excluded!==0 (
    if exist %%C (
      if exist %%C\testsuite (
        if exist %%C\testsuite\%BINDIR%\%TESTRUNNER% (
          echo.
          echo.
          echo ****************************************
          echo *** %%C
          echo ****************************************
          echo.

		  set /a runs=!runs! + 1
		  set dir=%CD%
		  cd %%C\testsuite
		  echo %BINDIR%\%TESTRUNNER% %IGNORE% %TESTRUNNERARGS%
		  %BINDIR%\%TESTRUNNER% %IGNORE% %TESTRUNNERARGS%
		  if !ERRORLEVEL! neq 0 (
		    set /a failures=!failures! + 1
		    set failedTests=!failedTests! %%C
		    set status=1
		  )
		  cd !dir!
        )
      )
    )
  )
)

echo.
echo.
echo !runs! runs, !failures! failed.
echo.
for %%F in (!failedTests!) do (
	echo Failed: %%F
)
echo.

exit /b !status!