Skip to content

Commit 08b3c0f

Browse files
Fix test summary reliability (#2543)
Fix write conflicts when adding the coverage to the `GITHUB_STEP_SUMMARY`.
1 parent 284acee commit 08b3c0f

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

eng/Test.targets

+41-1
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,52 @@
3232
<ReportGeneratorReportTypes>Cobertura;HTML</ReportGeneratorReportTypes>
3333
<ReportGeneratorReportTypes Condition=" '$(ReportGeneratorOutputMarkdown)' == 'true' ">$(ReportGeneratorReportTypes);MarkdownSummaryGitHub</ReportGeneratorReportTypes>
3434
<ReportGeneratorTargetDirectory>$([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', '../artifacts/', 'coverage-reports', '$(MSBuildProjectName)'))</ReportGeneratorTargetDirectory>
35+
<_MarkdownSummaryFile>$([System.IO.Path]::Combine($(ReportGeneratorTargetDirectory), 'SummaryGithub.md'))</_MarkdownSummaryFile>
3536
<_MarkdownSummaryPrefix>&lt;details&gt;&lt;summary&gt;:chart_with_upwards_trend: &lt;b&gt;$(AssemblyName) Code Coverage report&lt;/b&gt; %28$(TargetFramework)%29&lt;/summary&gt;</_MarkdownSummaryPrefix>
3637
<_MarkdownSummarySuffix>&lt;/details&gt;</_MarkdownSummarySuffix>
3738
</PropertyGroup>
3839

40+
<UsingTask TaskName="WriteLinesToFileWithRetry" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
41+
<ParameterGroup>
42+
<File ParameterType="System.String" Required="true" />
43+
<Lines ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
44+
</ParameterGroup>
45+
<Task>
46+
<Code Type="Fragment" Language="cs"><![CDATA[
47+
var lines = new System.Collections.Generic.List<string>();
48+
foreach (var line in Lines)
49+
{
50+
lines.Add(line.ItemSpec);
51+
}
52+
int attempt = 0;
53+
while (attempt < 3)
54+
{
55+
try
56+
{
57+
System.IO.File.AppendAllLines(File, lines);
58+
break;
59+
}
60+
catch (System.IO.IOException)
61+
{
62+
attempt++;
63+
System.Threading.Thread.Sleep(1_000);
64+
}
65+
}
66+
]]></Code>
67+
</Task>
68+
</UsingTask>
69+
3970
<Target Name="GenerateCoverageReports" AfterTargets="GenerateCoverageResultAfterTest" Condition=" '$(CollectCoverage)' == 'true' ">
4071
<ReportGenerator ReportFiles="@(CoverletReport)" ReportTypes="$(ReportGeneratorReportTypes)" Tag="$(TargetFramework)" TargetDirectory="$(ReportGeneratorTargetDirectory)" Title="$(AssemblyName)" VerbosityLevel="Warning" />
41-
<Exec Condition=" '$(ReportGeneratorOutputMarkdown)' == 'true' " Command="pwsh -Command %22('$(_MarkdownSummaryPrefix)' + [System.Environment]::NewLine + [System.Environment]::NewLine + (Get-Content $([System.IO.Path]::Combine($(ReportGeneratorTargetDirectory), 'SummaryGithub.md')) | Out-String) + [System.Environment]::NewLine + [System.Environment]::NewLine + '$(_MarkdownSummarySuffix)') >> $(GITHUB_STEP_SUMMARY)%22" />
72+
<PropertyGroup Condition=" '$(ReportGeneratorOutputMarkdown)' == 'true' AND Exists('$(_MarkdownSummaryFile)') ">
73+
<_ReportSummaryContent>$(_MarkdownSummaryPrefix)</_ReportSummaryContent>
74+
<_ReportSummaryContent>$(_ReportSummaryContent)$([System.Environment]::NewLine)</_ReportSummaryContent>
75+
<_ReportSummaryContent>$(_ReportSummaryContent)$([System.Environment]::NewLine)</_ReportSummaryContent>
76+
<_ReportSummaryContent>$(_ReportSummaryContent)$([System.IO.File]::ReadAllText('$(_MarkdownSummaryFile)'))</_ReportSummaryContent>
77+
<_ReportSummaryContent>$(_ReportSummaryContent)$([System.Environment]::NewLine)</_ReportSummaryContent>
78+
<_ReportSummaryContent>$(_ReportSummaryContent)$([System.Environment]::NewLine)</_ReportSummaryContent>
79+
<_ReportSummaryContent>$(_ReportSummaryContent)$(_MarkdownSummarySuffix)</_ReportSummaryContent>
80+
</PropertyGroup>
81+
<WriteLinesToFileWithRetry Condition=" '$(ReportGeneratorOutputMarkdown)' == 'true' AND Exists('$(_MarkdownSummaryFile)') " ContinueOnError="WarnAndContinue" File="$(GITHUB_STEP_SUMMARY)" Lines="$(_ReportSummaryContent)" />
4282
</Target>
4383
</Project>

0 commit comments

Comments
 (0)