Skip to content

Commit 93ac81e

Browse files
jakubch1Jakub Chocholowicz
andauthored
Add deterministic source mapping storing for Microsoft.CodeCoverage package (#4849)
Co-authored-by: Jakub Chocholowicz <jachocho@microsoft.com>
1 parent e6c166f commit 93ac81e

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/package/Microsoft.CodeCoverage/Microsoft.CodeCoverage.targets

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,38 @@
2323
<Copy SourceFiles="@(TraceDataCollectorArtifacts)" DestinationFolder="$(PublishDir)%(RecursiveDir)" />
2424

2525
</Target>
26+
27+
<PropertyGroup Condition="'$(NETCoreSdkVersion)' != ''">
28+
<_msCoverageSdkNETCoreSdkVersion>$(NETCoreSdkVersion)</_msCoverageSdkNETCoreSdkVersion>
29+
<_msCoverageSdkNETCoreSdkVersion Condition="$(_msCoverageSdkNETCoreSdkVersion.Contains('-'))">$(_msCoverageSdkNETCoreSdkVersion.Split('-')[0])</_msCoverageSdkNETCoreSdkVersion>
30+
<_msCoverageSdkMinVersionWithDependencyTarget>6.0.100</_msCoverageSdkMinVersionWithDependencyTarget>
31+
<_msCoverageSourceRootTargetName>MsCoverageGetPathMap</_msCoverageSourceRootTargetName>
32+
<_msCoverageSourceRootTargetName Condition="'$([System.Version]::Parse($(_msCoverageSdkNETCoreSdkVersion)).CompareTo($([System.Version]::Parse($(_msCoverageSdkMinVersionWithDependencyTarget)))))' &gt;= '0' ">InitializeSourceRootMappedPaths</_msCoverageSourceRootTargetName>
33+
</PropertyGroup>
34+
35+
<!-- This target required to store deterministic sources mapping.
36+
It is modified version of https://github.com/coverlet-coverage/coverlet/blob/d1ca364b7dbff38abce0457d94c4ce1b7e3a4cd9/src/coverlet.collector/build/coverlet.collector.targets#L35 -->
37+
<Target Condition="'$(NETCoreSdkVersion)' != ''" Name="MsCoverageReferencedPathMaps" BeforeTargets="CoreCompile" DependsOnTargets="ResolveProjectReferences" >
38+
<MSBuild Projects="@(AnnotatedProjects->'%(FullPath)')"
39+
Targets="$(_msCoverageSourceRootTargetName)"
40+
Properties="TargetFramework=%(AnnotatedProjects.NearestTargetFramework)"
41+
SkipNonexistentTargets="true">
42+
<Output TaskParameter="TargetOutputs"
43+
ItemName="_msCoverageLocalTopLevelSourceRoot" />
44+
</MSBuild>
45+
<ItemGroup>
46+
<_msCoverageByProject Include="@(_msCoverageLocalTopLevelSourceRoot->'%(MSBuildSourceProjectFile)')" OriginalPath="%(Identity)" />
47+
<_msCoverageMapping Include="@(_msCoverageByProject->'%(Identity)|%(OriginalPath)=%(MappedPath)')" />
48+
</ItemGroup>
49+
<PropertyGroup>
50+
<_msCoverageSourceRootMappingFilePath>$([MSBuild]::EnsureTrailingSlash('$(OutputPath)')).msCoverageSourceRootsMapping_$(AssemblyName)</_msCoverageSourceRootMappingFilePath>
51+
</PropertyGroup>
52+
<WriteLinesToFile File="$(_msCoverageSourceRootMappingFilePath)" Lines="@(_msCoverageMapping)"
53+
Overwrite="true" Encoding="Unicode"
54+
Condition="'@(_msCoverageMapping)'!=''"
55+
WriteOnlyWhenDifferent="true" />
56+
<ItemGroup>
57+
<FileWrites Include="$(_msCoverageSourceRootMappingFilePath)" Condition="'@(_msCoverageMapping)'!=''" />
58+
</ItemGroup>
59+
</Target>
2660
</Project>

0 commit comments

Comments
 (0)