::------------------------------------------------------------------------------------------------------- :: 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