69 lines
2.8 KiB
Batchfile
69 lines
2.8 KiB
Batchfile
@echo off
|
|
REM Disable "!Foo!" expansions because they break the filter syntax
|
|
setlocal disableextensions
|
|
|
|
set target=%1
|
|
set targetFrameworkIdentifier=%2
|
|
set sdkVersion=%3
|
|
set runtimeVersion=%4
|
|
set helixQueue=%5
|
|
set arch=%6
|
|
set quarantined=%7
|
|
|
|
set DOTNET_HOME=%HELIX_CORRELATION_PAYLOAD%\sdk
|
|
set DOTNET_ROOT=%DOTNET_HOME%\%arch%
|
|
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
|
set DOTNET_MULTILEVEL_LOOKUP=0
|
|
set DOTNET_CLI_HOME=%HELIX_CORRELATION_PAYLOAD%\home
|
|
|
|
set PATH=%DOTNET_ROOT%;%PATH%;%HELIX_CORRELATION_PAYLOAD%\node\bin
|
|
|
|
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %arch% -Version %sdkVersion% -InstallDir %DOTNET_ROOT%"
|
|
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture %arch% -Runtime dotnet -Version %runtimeVersion% -InstallDir %DOTNET_ROOT%"
|
|
|
|
set HELIX=%helixQueue%
|
|
|
|
if (%targetFrameworkIdentifier%==.NETFramework) (
|
|
xunit.console.exe %target% -xml testResults.xml
|
|
exit /b %ERRORLEVEL%
|
|
)
|
|
|
|
%DOTNET_ROOT%\dotnet vstest %target% -lt >discovered.txt
|
|
find /c "Exception thrown" discovered.txt
|
|
REM "ERRORLEVEL is not %ERRORLEVEL%" https://blogs.msdn.microsoft.com/oldnewthing/20080926-00/?p=20743/
|
|
if not errorlevel 1 (
|
|
echo Exception thrown during test discovery. 1>&2
|
|
type discovered.txt 1>&2
|
|
exit /b 1
|
|
)
|
|
|
|
set exit_code=0
|
|
|
|
set NONQUARANTINE_FILTER="Flaky:All!=true&Flaky:Helix:All!=true&Flaky:Helix:Queue:All!=true&Flaky:Helix:Queue:%HELIX%!=true"
|
|
set QUARANTINE_FILTER="Flaky:All=true|Flaky:Helix:All=true|Flaky:Helix:Queue:All=true|Flaky:Helix:Queue:%HELIX%=true"
|
|
if (%quarantined%==true) (
|
|
echo Running all tests.
|
|
%DOTNET_ROOT%\dotnet vstest %target% --logger:xunit --TestCaseFilter:%QUARANTINE_FILTER%
|
|
if errorlevel 1 (
|
|
echo Failure in flaky test 1>&2
|
|
REM DO NOT EXIT and DO NOT SET EXIT_CODE to 1
|
|
)
|
|
) else (
|
|
REM We need to specify all possible Flaky filters that apply to this environment, because the flaky attribute
|
|
REM only puts the explicit filter traits the user provided in
|
|
REM Filter syntax: https://github.com/Microsoft/vstest-docs/blob/master/docs/filter.md
|
|
echo Running non-quarantined tests.
|
|
%DOTNET_ROOT%\dotnet vstest %target% --logger:xunit --TestCaseFilter:%NONQUARANTINE_FILTER%
|
|
if errorlevel 1 (
|
|
echo Failure in non-flaky test 1>&2
|
|
set exit_code=1
|
|
REM DO NOT EXIT
|
|
)
|
|
)
|
|
|
|
echo "Copying TestResults\TestResults.xml to ."
|
|
copy TestResults\TestResults.xml testResults.xml
|
|
|
|
exit /b %exit_code%
|
|
|