::------------------------------------------------------------------------------------------------------- | |
:: Copyright (C) Microsoft. All rights reserved. | |
:: Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
::------------------------------------------------------------------------------------------------------- | |
:: ============================================================================ | |
:: | |
:: runnativetests.cmd | |
:: | |
:: ============================================================================ | |
@echo off | |
setlocal | |
goto :main | |
:: ============================================================================ | |
:: Print usage | |
:: ============================================================================ | |
:printUsage | |
echo runnativetests.cmd -x86^|-x64 -debug^|-test [--help] | |
echo. | |
echo Required switches: | |
echo. | |
echo Specify architecture of jsrt binaries (required): | |
echo. | |
echo -x86 Build arch of binaries is x86 | |
echo -x64 Build arch of binaries is x64 | |
echo. | |
echo Specify type of jsrt binaries (required): | |
echo. | |
echo -debug Build type of binaries is debug | |
echo -test Build type of binaries is test | |
echo. | |
echo --help Print help from nativetests (note, arch/type still required) | |
echo. | |
echo Shorthand combinations can be used, e.g. -x64debug | |
echo. | |
goto :eof | |
:: ============================================================================ | |
:: Print how to get help | |
:: ============================================================================ | |
:printGetHelp | |
echo For help use runnativetests.cmd -? | |
goto :eof | |
:: ============================================================================ | |
:: Main script | |
:: ============================================================================ | |
:main | |
call :initVars | |
call :parseArgs %* | |
if not "%fShowUsage%" == "" ( | |
call :printUsage | |
goto :eof | |
) | |
call :validateArgs | |
if not "%fShowGetHelp%" == "" ( | |
call :printGetHelp | |
goto :eof | |
) | |
call :configureVars | |
call :copyScriptsAndBinaries | |
call :runtest | |
call :cleanup | |
echo -- runnativetests.cmd ^>^> Exiting with exit code %_HadFailures% | |
exit /b %_HadFailures% | |
:: ============================================================================ | |
:: Parse the user arguments into environment variables | |
:: ============================================================================ | |
:parseArgs | |
:NextArgument | |
if "%1" == "-?" set fShowUsage=1& goto :ArgOk | |
if "%1" == "/?" set fShowUsage=1& goto :ArgOk | |
if /i "%1" == "-x86" set _BuildArch=x86& goto :ArgOk | |
if /i "%1" == "-x64" set _BuildArch=x64& goto :ArgOk | |
if /i "%1" == "-debug" set _BuildType=debug& goto :ArgOk | |
if /i "%1" == "-test" set _BuildType=test& goto :ArgOk | |
if /i "%1" == "-x86debug" set _BuildArch=x86&set _BuildType=debug& goto :ArgOk | |
if /i "%1" == "-x64debug" set _BuildArch=x64&set _BuildType=debug& goto :ArgOk | |
if /i "%1" == "-x86test" set _BuildArch=x86&set _BuildType=test& goto :ArgOk | |
if /i "%1" == "-x64test" set _BuildArch=x64&set _BuildType=test& goto :ArgOk | |
if /i "%1" == "-binDir" set _BinDirBase=%~f2& goto :ArgOkShift2 | |
rem Store unrecognized args in this var for when we later call the executable | |
if not "%1" == "" set _NativeTestArgs=%_NativeTestArgs%%1 & goto :ArgOk | |
goto :eof | |
:ArgOkShift2 | |
shift | |
:ArgOk | |
shift | |
goto :NextArgument | |
:: ============================================================================ | |
:: Initialize batch script variables to defaults | |
:: ============================================================================ | |
:initVars | |
set _HadFailures=0 | |
set _RootDir=%~dp0.. | |
set _BinDirBase=%_RootDir%\Build\VcBuild\Bin | |
set _BinDir= | |
set _TestTempDir= | |
set _BuildArch= | |
set _BuildType= | |
set _NativeTestArgs= | |
goto :eof | |
:: ============================================================================ | |
:: Validate that required arguments were specified | |
:: ============================================================================ | |
:validateArgs | |
if "%_BuildArch%" == "" ( | |
echo Error missing required build architecture or build type switch | |
set fShowGetHelp=1 | |
goto :eof | |
) | |
if "%_BuildType%" == "" ( | |
echo Error missing required build architecture or build type switch | |
set fShowGetHelp=1 | |
) | |
goto :eof | |
:: ============================================================================ | |
:: Configure the script variables and environment based on parsed arguments | |
:: ============================================================================ | |
:configureVars | |
set _BinDir=%_BinDirBase%\%_BuildArch%_%_BuildType%\ | |
rem Use %_BinDir% as the root for %_TestTempDir% to ensure that running jsrt | |
rem native tests from multiple repos simultaneously do not clobber each other. | |
rem This means we need to delete the temp directory afterwards to clean up. | |
set _TestTempDir=%_BinDir%\jsrttest\ | |
if not exist %_TestTempDir% mkdir %_TestTempDir% | |
echo -- runnativetests.cmd ^>^> #### BinDir: %_BinDir% | |
echo -- runnativetests.cmd ^>^> #### TestTempDir: %_TestTempDir% | |
goto :eof | |
:: ============================================================================ | |
:: Copying javascript files from source location to temp test location and test | |
:: binaries from binary location to test temp location. | |
:: ============================================================================ | |
:copyScriptsAndBinaries | |
echo -- runnativetests.cmd ^>^> copying scripts from '%_RootDir%\bin\nativetests\Scripts' to '%_TestTempDir%' | |
copy /y %_RootDir%\bin\nativetests\Scripts\*.js %_TestTempDir% | |
copy /y %_BinDir%ChakraCore.dll %_TestTempDir% | |
copy /y %_BinDir%nativetests.exe %_TestTempDir% | |
goto :eof | |
:: ============================================================================ | |
:: Running tests using nativetests.exe | |
:: ============================================================================ | |
:runtest | |
pushd %_TestTempDir% | |
echo -- runnativetests.cmd ^>^> Calling %cd%\nativetests.exe with additional args: %_NativeTestArgs% | |
call :do nativetests.exe %_NativeTestArgs% | |
if "%_error%" NEQ "0" ( | |
set _HadFailures=1 | |
echo -- runnativetests.cmd ^>^> nativetests.exe exited with non-zero exit code %_error% | |
) | |
popd | |
goto :eof | |
:: ============================================================================ | |
:: Clean up left over files | |
:: ============================================================================ | |
:cleanUp | |
call :do rd /s/q %_TestTempDir% | |
goto :eof | |
:: ============================================================================ | |
:: Echo a command line before executing it | |
:: ============================================================================ | |
:do | |
echo ^>^> %* | |
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 ^>^> %* ^> nul 2^>^&1 | |
cmd /s /c "%* > nul 2>&1" | |
goto :eof |