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