Skip to content

Commit bd0e5d0

Browse files
kere-nelKeren Fuentes
andauthored
Fixes Code Coverage in Arcade (#5528)
* arcade code coverage changes * adding Michael's changes * updating path Co-authored-by: Keren Fuentes <kedejesu@microsoft.com>
1 parent f28dfb3 commit bd0e5d0

File tree

3 files changed

+51
-7
lines changed

3 files changed

+51
-7
lines changed

Directory.Build.targets

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
<Project>
33
<Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
44

5+
<ItemGroup Condition="'$(IsUnitTestProject)' == 'true'">
6+
<PackageReference Include="coverlet.msbuild" Version="2.9.0" PrivateAssets="all" />
7+
</ItemGroup>
8+
59
<Target Name="CopyNativeAssembiles" AfterTargets="CopyFilesToOutputDirectory">
610
<PropertyGroup>
711
<LibPrefix Condition="'$(OS)' != 'Windows_NT'">lib</LibPrefix>
@@ -35,5 +39,45 @@
3539
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
3640
</Copy>
3741
</Target>
42+
<PropertyGroup Condition="'$(Coverage)' == 'true'">
43+
<!-- https://github.com/tonerdo/coverlet/issues/363 -->
44+
<DeterministicSourcePaths>false</DeterministicSourcePaths>
45+
46+
<!-- https://github.com/tonerdo/coverlet/issues/618 -->
47+
<IncludeTestAssembly>true</IncludeTestAssembly>
48+
49+
<CollectCoverage>true</CollectCoverage>
50+
<SingleHit>true</SingleHit>
51+
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
52+
<CoverletOutputFormat>opencover</CoverletOutputFormat>
53+
<CoverletOutput>$(BaseOutputPath)$(PlatformConfig)\coverage\coverage.opencover.xml</CoverletOutput>
54+
<Include></Include>
55+
<Exclude></Exclude>
56+
<ExcludeByAttribute>ExcludeFromCodeCoverage</ExcludeByAttribute>
57+
<ExcludeByFile></ExcludeByFile>
58+
</PropertyGroup>
59+
60+
<Target Name="OuterInstrumentModulesNoBuild" BeforeTargets="RunTests" Condition="'$(IsUnitTestProject)' == 'true' AND '$(TargetFramework)' == ''">
61+
<MSBuild
62+
Projects="$(MSBuildProjectFullPath)"
63+
Targets="InnerInstrumentModulesNoBuild"
64+
Properties="TargetFramework=%(_TargetFramework.Identity)" />
65+
</Target>
66+
67+
<Target Name="OuterGenerateCoverageResult" BeforeTargets="Test" Condition="'$(IsUnitTestProject)' == 'true' AND '$(TargetFramework)' == ''">
68+
<MSBuild
69+
Projects="$(MSBuildProjectFullPath)"
70+
Targets="InnerGenerateCoverageResult"
71+
Properties="TargetFramework=%(_TargetFramework.Identity)" />
72+
</Target>
73+
74+
<Target Name="InnerInstrumentModulesNoBuild"
75+
BeforeTargets="RunTests"
76+
DependsOnTargets="InstrumentModules"
77+
Condition="'$(IsUnitTestProject)' == 'true' AND '$(TargetFramework)' != '' AND '$(CollectCoverage)' == 'true'" />
3878

79+
<Target Name="InnerGenerateCoverageResult"
80+
BeforeTargets="Test"
81+
DependsOnTargets="GenerateCoverageResult"
82+
Condition="'$(IsUnitTestProject)' == 'true' AND '$(TargetFramework)' != '' AND '$(CollectCoverage)' == 'true'" />
3983
</Project>

build/Codecoverage.proj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
<_ReportGeneratorPath>$(PkgReportGenerator)\tools\net47\ReportGenerator.exe</_ReportGeneratorPath>
1717
</PropertyGroup>
1818

19-
<Message Importance="high" Text="&quot;$(_ReportGeneratorPath)&quot; -reports:$(BaseOutputPath)$(PlatformConfig)\*\*\coverage.opencover.xml -targetdir:$(BaseOutputPath)$(PlatformConfig)\coverage -filefilters:+*.cs;+*.fs -reporttypes:Cobertura" />
20-
<Exec Command="&quot;$(_ReportGeneratorPath)&quot; -reports:$(BaseOutputPath)$(PlatformConfig)\*\*\coverage.opencover.xml -targetdir:$(BaseOutputPath)$(PlatformConfig)\coverage -filefilters:+*.cs;+*.fs -reporttypes:Cobertura" />
19+
<Message Importance="high" Text="&quot;$(_ReportGeneratorPath)&quot; -reports:$(ArtifactsDir)bin\**\coverage.opencover.xml -targetdir:$(ArtifactsDir)bin\ -filefilters:+*.cs;+*.fs -reporttypes:Cobertura" />
20+
<Exec Command="&quot;$(_ReportGeneratorPath)&quot; -reports:$(ArtifactsDir)bin\**\coverage.opencover.xml -targetdir:$(ArtifactsDir)bin\coverage -filefilters:+*.cs;+*.fs -reporttypes:Cobertura" />
2121

2222
<ItemGroup>
23-
<_CodecovArgs Include="-f;$(BaseOutputPath)$(PlatformConfig)\coverage\Cobertura.xml" />
24-
23+
<_CodecovArgs Include="-f;$(ArtifactsDir)bin\coverage\Cobertura.xml" />
24+
2525
<!-- Report an error if the upload fails -->
2626
<_CodecovArgs Include="--required" />
2727

build/ci/job-template.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ jobs:
116116
- ${{ if eq(parameters.innerLoop, 'false') }}:
117117
- ${{ if and(eq(parameters.runSpecific, 'false'), eq(parameters.useVSTestTask, 'false')) }}:
118118
# TODO: Code coverage needs to be fixed.
119-
- script: ${{ parameters.buildScript }} /p:Build=false -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} -test -integrationTest -ci #-coverage=${{ parameters.codeCoverage }}
119+
- script: ${{ parameters.buildScript }} /p:Build=false -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} -test -integrationTest -ci /p:RestorePackagesPath=$(Build.SourcesDirectory)\packages /p:NUGET_PACKAGES=$(Build.SourcesDirectory)\packages /p:Coverage=${{ parameters.codeCoverage }}
120120
displayName: Run All Tests.
121121
- ${{ if and(eq(parameters.runSpecific, 'true'), eq(parameters.useVSTestTask, 'false')) }}:
122-
- script: ${{ parameters.buildScript }} /p:Build=false -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} -test -integrationTest -ci /p:TestRunnerAdditionalArguments='-trait$(spaceValue)Category=RunSpecificTest' /p:RestorePackagesPath=$(Build.SourcesDirectory)\packages /p:NUGET_PACKAGES=$(Build.SourcesDirectory)\packages #-coverage=${{ parameters.codeCoverage }}
122+
- script: ${{ parameters.buildScript }} /p:Build=false -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} -test -integrationTest -ci /p:TestRunnerAdditionalArguments='-trait$(spaceValue)Category=RunSpecificTest' /p:RestorePackagesPath=$(Build.SourcesDirectory)\packages /p:NUGET_PACKAGES=$(Build.SourcesDirectory)\packages /p:Coverage=${{ parameters.codeCoverage }}
123123
displayName: Run Specific Tests.
124124
- ${{ if and(eq(parameters.buildScript, 'build.cmd'), eq(parameters.useVSTestTask, 'true')) }}:
125125
- task: VSTest@2
@@ -143,7 +143,7 @@ jobs:
143143
collectDumpOn: onAbortOnly
144144
publishRunAttachments: true
145145
- ${{ if eq(parameters.innerLoop, 'true') }}:
146-
- script: ${{ parameters.buildScript }} /p:Build=false -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} -test -integrationTest -ci /p:TestRunnerAdditionalArguments='-notrait$(spaceValue)Category=SkipInCI' /p:RestorePackagesPath=$(Build.SourcesDirectory)\packages /p:NUGET_PACKAGES=$(Build.SourcesDirectory)\packages #-coverage=${{ parameters.codeCoverage }}
146+
- script: ${{ parameters.buildScript }} /p:Build=false -configuration $(_configuration) /p:TargetArchitecture=${{ parameters.architecture }} /p:TestArchitectures=${{ parameters.architecture }} -test -integrationTest -ci /p:TestRunnerAdditionalArguments='-notrait$(spaceValue)Category=SkipInCI' /p:RestorePackagesPath=$(Build.SourcesDirectory)\packages /p:NUGET_PACKAGES=$(Build.SourcesDirectory)\packages /p:Coverage=${{ parameters.codeCoverage }}
147147
displayName: Run CI Tests.
148148
- script: $(dotnetPath) msbuild -restore build/Codecoverage.proj
149149
displayName: Upload coverage to codecov.io

0 commit comments

Comments
 (0)