summaryrefslogtreecommitdiff
path: root/tests/helixpublishwitharcade.proj
blob: 6a4622ee59dbc6a59e8cf409c5fe7b7eca43d9f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<Project Sdk="Microsoft.DotNet.Helix.Sdk" DefaultTargets="SubmitTestsToHelix">

  <!-- This project uses the helix SDK, documented at
       https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.Helix/Sdk,
       to send test jobs to helix. -->

  <Import Project="..\dir.props" />

  <PropertyGroup>
    <HelixArchitecture>$(BuildArch)</HelixArchitecture>
    <HelixConfiguration>$(BuildType)</HelixConfiguration>

    <IsExternal>$(_IsExternal)</IsExternal>
    <IsExternal Condition=" '$(IsExternal)' == '' ">true</IsExternal>

    <Creator Condition=" '$(IsExternal)' == 'true' ">$(_Creator)</Creator>
    <HelixAccessToken Condition=" '$(IsExternal)' != 'true' ">$(_HelixAccessToken)</HelixAccessToken>
    <HelixTargetQueues>$(_HelixTargetQueues)</HelixTargetQueues>

    <EnableAzurePipelinesReporter>$(_PublishTestResults)</EnableAzurePipelinesReporter>
    <EnableAzurePipelinesReporter Condition=" '$(EnableAzurePipelinesReporter)' == '' ">false</EnableAzurePipelinesReporter>

    <HelixBuild>$(_HelixBuild)</HelixBuild>
    <HelixSource>$(_HelixSource)</HelixSource>
    <HelixType>$(_HelixType)</HelixType>

    <TimeoutInMinutes>$(_TimeoutInMinutes)</TimeoutInMinutes>
    <TimeoutInMinutes Condition=" '$(TimeoutInMinutes)' == '' ">5</TimeoutInMinutes>

    <WaitForWorkItemCompletion>true</WaitForWorkItemCompletion>
    <CoreRootDirectory>$(TestWorkingDir)\Tests\Core_Root</CoreRootDirectory>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetsWindows)' == 'true' ">
    <HelixPythonPath>%HELIX_PYTHONPATH%</HelixPythonPath>
    <RunnerScript>%HELIX_CORRELATION_PAYLOAD%\runtest_helix.py</RunnerScript>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetsWindows)' != 'true' ">
    <HelixPythonPath>$HELIX_PYTHONPATH</HelixPythonPath>
    <RunnerScript>$HELIX_CORRELATION_PAYLOAD/runtest_helix.py</RunnerScript>
  </PropertyGroup>

  <ItemGroup>
    <HelixCorrelationPayload Include="$(CoreRootDirectory)" />
    <XUnitWrapperDlls Include="$(TestWorkingDir)\**\*.XUnitWrapper.dll" />
  </ItemGroup>

  <Target Name="CopyRunnerScriptToCoreRootDirectory" BeforeTargets="SubmitTestsToHelix">
    <Copy SourceFiles="$(MSBuildThisFileDirectory)\runtest_helix.py" DestinationFolder="$(CoreRootDirectory)" />
  </Target>

  <Target Name="SubmitTestsToHelix">
    <ItemGroup>
      <Scenarios Include="$(_Scenarios.Split(','))" />
      <ProjectsToBuild Include="$(MSBuildProjectFile)">
        <Properties>Scenario=%(_Scenarios.Identity)</Properties>
      </ProjectsToBuild>
    </ItemGroup>
    <PropertyGroup>
      <BuildInParallel>false</BuildInParallel>
      <BuildInParallel Condition=" '@(ProjectsToBuild->Count())' > '1' ">true</BuildInParallel>
    </PropertyGroup>
    <MSBuild Projects="@(ProjectsToBuild)" Targets="Test" BuildInParallel="$(BuildInParallel)" StopOnFirstFailure="false" UnloadProjectsOnCompletion="true" />
  </Target>

  <Target Name="BuildHelixWorkItem" BeforeTargets="Test">
    <PropertyGroup>
      <!-- The "normal" scenario is just a way to include the default
           (empty) scenario when specifying multiple scenarios at
           once. From here, on, treat it as the empty scenario so that
           job names will not have a scenario prefix and the runtest
           script doesn't have to define a "normal" scenario. -->
      <Scenario Condition=" '$(Scenario)' == 'normal' "></Scenario>
      <TestRunNamePrefix Condition=" '$(Scenario)' == '' ">$(BuildOS) $(BuildArch) $(BuildType) @ </TestRunNamePrefix>
      <TestRunNamePrefix Condition=" '$(Scenario)' != '' ">$(BuildOS) $(BuildArch) $(BuildType) $(Scenario) @ </TestRunNamePrefix>
    </PropertyGroup>
    <ItemGroup>
      <HelixWorkItem Include="@(XUnitWrapperDlls->'%(FileName)'->Replace('.XUnitWrapper', ''))">
        <PayloadDirectory>%(RootDir)%(Directory)</PayloadDirectory>
        <Command Condition=" '$(Scenario)' == '' ">$(HelixPythonPath) $(RunnerScript) -wrapper %(FileName)%(Extension)</Command>
        <Command Condition=" '$(Scenario)' != '' ">$(HelixPythonPath) $(RunnerScript) -wrapper %(FileName)%(Extension) -scenario $(Scenario)</Command>
        <Timeout>$([System.TimeSpan]::FromMinutes($(TimeoutInMinutes)))</Timeout>
      </HelixWorkItem>
    </ItemGroup>
  </Target>

</Project>