| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- ::-------------------------------------------------------------------------------------------------------
- :: 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
- set _error=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%_SpecialBuild%\bin
- call :doSilent rd /s/q %_LogDir%
- call :runTests %_TestArgs%
- if "%_ReducedTestRun%" == "1" (
- echo -- jenkins.testone.cmd ^>^> Reduced test run: skipping native tests.
- ) else (
- call :runNativeTests %_TestArgs%
- )
- call :summarizeLogs
- echo.
- echo -- jenkins.testone.cmd ^>^> Failure code: %_HadFailures%
- if "%_HadFailures%" NEQ "0" (
- if "%_HadFailures%" == "3" (
- echo -- jenkins.testone.cmd ^>^> Unit tests failed! 1>&2
- ) else if "%_HadFailures%" == "4" (
- echo -- jenkins.testone.cmd ^>^> Native tests failed! 1>&2
- ) else (
- echo -- jenkins.testone.cmd ^>^> Unknown failure! 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 "%_error%" NEQ "0" (
- echo -- jenkins.testone.cmd ^>^> runtests.cmd failed
- set _HadFailures=3
- )
- goto :eof
- :: ============================================================================
- :: Run jsrt test suite against one build config and record if there were errors
- :: ============================================================================
- :runNativeTests
- echo -- jenkins.testone.cmd ^>^> Running native tests... this can take some time
- if not exist %_LogDir%\ mkdir %_LogDir%
- set _LogFile=%_LogDir%\nativetests.log
- call :do %_TestDir%\runnativetests.cmd -%1 -binDir %_BinDir% > %_LogFile% 2>&1
- echo -- jenkins.testone.cmd ^>^> Running native tests... DONE!
- if "%_error%" NEQ "0" (
- echo -- jenkins.testone.cmd ^>^> runnativetests.cmd failed; printing %_LogFile%
- powershell "if (Test-Path %_LogFile%) { Get-Content %_LogFile% }"
- set _HadFailures=4
- )
- 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
- echo -- jenkins.testone.cmd ^>^> Printing summary...
- type summary.log 1>&2
- popd
- :: ============================================================================
- :: Echo a command line before executing it
- :: ============================================================================
- :do
- echo -- jenkins.testone.cmd ^>^> :do %*
- cmd /s /c "%*"
- set _error=%ERRORLEVEL%
- goto :eof
- :: ============================================================================
- :: Echo a command line before executing it and redirect the command's output
- :: to nul
- :: ============================================================================
- :doSilent
- echo -- jenkins.testone.cmd ^>^> :doSilent %* ^> nul 2^>^&1
- cmd /s /c "%* > nul 2>&1"
- set _error=%ERRORLEVEL%
- goto :eof
|