| ::------------------------------------------------------------------------------------------------------- |
| :: Copyright (C) Microsoft. All rights reserved. |
| :: Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| ::------------------------------------------------------------------------------------------------------- |
| |
| :: ============================================================================ |
| :: |
| :: jenkins.testone.cmd |
| :: |
| :: Runs tests for Jenkins continuous integration. This script is called from |
| :: the Jenkins CI build and it runs all tests for x86 and x64, debug and test |
| :: build configs. |
| :: |
| :: Do not use this script to run all tests on your dev box. |
| :: - It will delete all your existing test logs |
| :: - It does not run the various flavors of the tests in parallel (though |
| :: this is not currently possible anyway because rl stages logs in a |
| :: common directory) |
| :: - It does nothing to provide useful output when there are failures, e.g. |
| :: they can be buried under thousands of lines of output from further |
| :: tests run. |
| :: - It cannot be cancelled without risk of polluting your command prompt |
| :: environment with environment variables that will make further calls to |
| :: runtests.cmd behave unexpectedly. |
| :: |
| :: ============================================================================ |
| |
| @echo off |
| setlocal |
| |
| set _RootDir=%~dp0.. |
| set _HadFailures=0 |
| |
| :: ============================================================================ |
| :: Main script |
| :: ============================================================================ |
| :main |
| |
| if not "%JENKINS_BUILD%" == "True" ( |
| echo This script should be run under a Jenkins Build environment |
| exit /b 2 |
| ) |
| |
| pushd %_RootDir%\test |
| set _TestDir=%CD% |
| |
| call jenkins.parsetestargs.cmd %* |
| set _LogDir=%_TestDir%\logs\%_TestArch%_%_TestType% |
| set _TestArgs=%_TestArch%%_TestType% |
| set _BinDir=%_RootDir%\Build\VcBuild%_NoJIT%\bin |
| |
| call :doSilent rd /s/q %_LogDir% |
| |
| call :runTests %_TestArgs% |
| call :runNativeTests %_TestArgs% |
| |
| call :summarizeLogs |
| |
| echo. |
| if "%_HadFailures%" == "1" ( |
| echo -- jenkins.testone.cmd ^>^> Tests failed! 1>&2 |
| ) else ( |
| echo -- jenkins.testone.cmd ^>^> Tests passed! |
| ) |
| |
| popd |
| |
| exit /b %_HadFailures% |
| |
| goto :eof |
| |
| :: ============================================================================ |
| :: Run one test suite against one build config and record if there were errors |
| :: ============================================================================ |
| :runTests |
| |
| call :do %_TestDir%\runtests.cmd -%1 -quiet -cleanupall -nottags exclude_jenkins %_ExtraTestArgs% -binDir %_BinDir% |
| |
| if ERRORLEVEL 1 set _HadFailures=1 |
| |
| goto :eof |
| |
| :: ============================================================================ |
| :: Run jsrt test suite against one build config and record if there were errors |
| :: ============================================================================ |
| :runNativeTests |
| |
| call :do %_TestDir%\runnativetests.cmd -%1 -binDir %_BinDir% > %_LogDir%\nativetests.log 2>&1 |
| |
| if ERRORLEVEL 1 set _HadFailures=1 |
| |
| goto :eof |
| |
| :: ============================================================================ |
| :: Summarize the logs into a listing of only the failures |
| :: ============================================================================ |
| :summarizeLogs |
| |
| pushd %_LogDir% |
| findstr /sp failed rl.results.log > summary.log |
| findstr /sip failed nativetests.log > summary.log |
| rem Echo to stderr so that VSO includes the output in the build summary |
| type summary.log 1>&2 |
| popd |
| |
| :: ============================================================================ |
| :: Echo a command line before executing it |
| :: ============================================================================ |
| :do |
| |
| echo -- jenkins.testone.cmd ^>^> %* |
| cmd /s /c "%*" |
| |
| goto :eof |
| |
| :: ============================================================================ |
| :: Echo a command line before executing it and redirect the command's output |
| :: to nul |
| :: ============================================================================ |
| :doSilent |
| |
| echo -- jenkins.testone.cmd ^>^> %* ^> nul 2^>^&1 |
| cmd /s /c "%* > nul 2>&1" |
| |
| goto :eof |