Skip to content

Commit af223e8

Browse files
committed
Use coverlet.collector instead of coverlet.msbuild
Pro: recommended way without [known issues][1] Con: No more nice summary table like this: ``` +----------------------------+------+--------+--------+ | Module | Line | Branch | Method | +----------------------------+------+--------+--------+ | Serilog.Formatting.Log4Net | 100% | 100% | 100% | +----------------------------+------+--------+--------+ +---------+------+--------+--------+ | | Line | Branch | Method | +---------+------+--------+--------+ | Total | 100% | 100% | 100% | +---------+------+--------+--------+ | Average | 100% | 100% | 100% | +---------+------+--------+--------+ ``` [1]: https://github.com/coverlet-coverage/coverlet/blob/d93613826b1a33f894b9c80f6ae893643a8b7254/Documentation/KnownIssues.md#vstest-stops-process-execution-early
1 parent cf08eac commit af223e8

File tree

2 files changed

+40
-28
lines changed

2 files changed

+40
-28
lines changed

.github/workflows/continuous-integration.yml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ jobs:
2222
checks: write
2323
name: Run tests and create NuGet package
2424
outputs:
25-
coverage-reports: ${{ steps.dotnet-test.outputs.coverage-reports }}
2625
nupkg-filename: ${{ steps.dotnet-pack.outputs.nupkg-filename }}
2726
steps:
2827
- name: Checkout git repository
@@ -41,9 +40,9 @@ jobs:
4140
- name: Restore NuGet packages
4241
run: dotnet restore
4342
- name: Build solution
44-
run: dotnet build
43+
run: dotnet build --no-restore
4544
- name: Run tests
46-
run: dotnet test --no-build --logger "html;LogFileName=../../TestResults-${{ runner.os }}.html" --logger "trx;LogFileName=../../TestResults-${{ runner.os }}.trx" --logger GitHubActions
45+
run: dotnet test --no-build
4746
id: dotnet-test
4847
- name: Upload received files from failing tests
4948
uses: actions/upload-artifact@v3
@@ -55,28 +54,28 @@ jobs:
5554
uses: actions/upload-artifact@v3
5655
if: always()
5756
with:
58-
name: TestResults-${{ runner.os }}
59-
path: TestResults-${{ runner.os }}.html
57+
name: TestResults (${{ runner.os }})
58+
path: TestResults-*.html
6059
- name: Test Report
6160
uses: dorny/test-reporter@v1
6261
if: always()
6362
with:
6463
name: Test Results (${{ runner.os }})
65-
path: TestResults-${{ runner.os }}.trx
64+
path: TestResults-*.trx
6665
reporter: dotnet-trx
6766
- name: Upload coverage report to Codecov
6867
if: matrix.os == 'ubuntu-latest'
6968
uses: codecov/codecov-action@v3
7069
with:
71-
files: ${{ steps.dotnet-test.outputs.coverage-reports }}
70+
files: coverage/*/coverage.cobertura.xml
7271
- name: Upload coverage report to Codacy
7372
env:
7473
CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
7574
if: matrix.os == 'ubuntu-latest' && env.CODACY_PROJECT_TOKEN != ''
7675
uses: codacy/codacy-coverage-reporter-action@v1
7776
with:
7877
project-token: ${{ env.CODACY_PROJECT_TOKEN }}
79-
coverage-reports: ${{ steps.dotnet-test.outputs.coverage-reports }}
78+
coverage-reports: coverage/*/coverage.cobertura.xml
8079
- name: Create NuGet package
8180
run: dotnet pack --no-build --output .
8281
id: dotnet-pack

tests/Serilog.Formatting.Log4Net.Tests.csproj

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="coverlet.msbuild" Version="3.2.0" PrivateAssets="all" />
10+
<PackageReference Include="coverlet.collector" Version="3.2.0" PrivateAssets="all" />
1111
<PackageReference Include="FluentAssertions" Version="6.10.0" />
1212
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
1313
<PackageReference Include="PublicApiGenerator" Version="11.0.0" />
@@ -24,35 +24,48 @@
2424
<PackageReference Include="GitHubActionsTestLogger" Version="2.0.1" PrivateAssets="all" />
2525
</ItemGroup>
2626

27+
<ItemGroup>
28+
<VSTestLogger Include="GitHubActions" Visible="false" Condition="$(ContinuousIntegrationBuild) == 'true'" />
29+
<VSTestLogger Include="trx%3BLogFileName=TestResults-$(TargetFramework).trx" Visible="false" Condition="$(ContinuousIntegrationBuild) == 'true'" />
30+
<VSTestLogger Include="html%3BLogFileName=TestResults-$(TargetFramework).html" Visible="false" />
31+
</ItemGroup>
32+
2733
<PropertyGroup Label="Coverage">
28-
<!-- Automatically collect coverage when running `dotnet test` -->
29-
<CollectCoverage>true</CollectCoverage>
30-
<!-- Tweak the default coverlet output directory to be `coverage` in the repository root directory -->
31-
<CoverletOutput>$([MSBuild]::EnsureTrailingSlash($([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine($(MSBuildProjectDirectory),'..','coverage'))))))</CoverletOutput>
32-
<!-- The default output format is `json` which is not supported by ReportGenerator -->
33-
<CoverletOutputFormat>cobertura</CoverletOutputFormat>
34+
<RootDirectory>$([System.IO.Directory]::GetParent($(MSBuildProjectDirectory)))</RootDirectory>
35+
<CoverageReportDirectory>$([System.IO.Path]::Combine($(RootDirectory),'coverage',$(TargetFramework)))</CoverageReportDirectory>
36+
<VSTestResultsDirectory Condition="$(ContinuousIntegrationBuild) == 'true'">$(RootDirectory)</VSTestResultsDirectory>
37+
<VSTestResultsDirectory Condition="$(ContinuousIntegrationBuild) != 'true'">$([System.IO.Path]::Combine($(CoverageReportDirectory),'results'))</VSTestResultsDirectory>
38+
<VSTestCollect>XPlat Code Coverage</VSTestCollect>
39+
<VSTestLogger>@(VSTestLogger)</VSTestLogger>
3440
</PropertyGroup>
3541

36-
<Target Name="GenerateHtmlCoverageReport" AfterTargets="GenerateCoverageResultAfterTest" Condition="$(ContinuousIntegrationBuild) != 'true'">
37-
<PropertyGroup>
38-
<CoverageReportDirectory>$([MSBuild]::EnsureTrailingSlash('$(CoverletOutput)report'))</CoverageReportDirectory>
39-
<OpenCommand Condition="$([MSBuild]::IsOSPlatform('Linux'))">xdg-open</OpenCommand>
40-
<OpenCommand Condition="$([MSBuild]::IsOSPlatform('OSX'))">open</OpenCommand>
41-
<OpenCommand Condition="$([MSBuild]::IsOSPlatform('Windows'))">explorer</OpenCommand>
42-
</PropertyGroup>
42+
<Target Name="GenerateHtmlCoverageReport" AfterTargets="VSTest" Condition="$(TargetFramework) != ''">
43+
<ItemGroup>
44+
<CoverletReport Include="$(VSTestResultsDirectory)/*/coverage.cobertura.xml" />
45+
</ItemGroup>
4346
<ReportGenerator ReportFiles="@(CoverletReport)" TargetDirectory="$(CoverageReportDirectory)" />
44-
<!-- executing "explorer path\to\index.html" returns exit code 1, so we ignore it -->
45-
<Exec WorkingDirectory="$(CoverageReportDirectory)" Command="$(OpenCommand) index.html" Condition="$(OpenCommand) != ''" IgnoreExitCode="true" />
4647
</Target>
4748

48-
<Target Name="WriteCoverageReportPathForGitHubActions" AfterTargets="GenerateCoverageResultAfterTest" Condition="$(GITHUB_OUTPUT) != ''">
49+
<!-- Because of https://github.com/microsoft/vstest/issues/2378 -->
50+
<Target Name="MoveCoverletReport" AfterTargets="GenerateHtmlCoverageReport">
51+
<Move SourceFiles="@(CoverletReport)" DestinationFolder="$(CoverageReportDirectory)" />
4952
<PropertyGroup>
50-
<CoverageReports>@(CoverletReport, ',')</CoverageReports>
53+
<CoverletReport>@(CoverletReport)</CoverletReport>
5154
</PropertyGroup>
5255
<ItemGroup>
53-
<GitHubOutput Include="coverage-reports=$(CoverageReports)" />
56+
<CoverletReportParentDirectory Include="$([System.IO.Path]::Combine($(CoverletReport),'..'))" />
5457
</ItemGroup>
55-
<WriteLinesToFile File="$(GITHUB_OUTPUT)" Lines="@(GitHubOutput)" />
58+
<RemoveDir Directories="@(CoverletReportParentDirectory)" />
59+
</Target>
60+
61+
<Target Name="OpenHtmlCoverageReport" AfterTargets="MoveCoverletReport" Condition="$(ContinuousIntegrationBuild) != 'true'">
62+
<PropertyGroup>
63+
<OpenCommand Condition="$([MSBuild]::IsOSPlatform('Linux'))">xdg-open</OpenCommand>
64+
<OpenCommand Condition="$([MSBuild]::IsOSPlatform('OSX'))">open</OpenCommand>
65+
<OpenCommand Condition="$([MSBuild]::IsOSPlatform('Windows'))">explorer</OpenCommand>
66+
</PropertyGroup>
67+
<!-- executing "explorer path\to\index.html" returns exit code 1, so we ignore it -->
68+
<Exec WorkingDirectory="$(CoverageReportDirectory)" Command="$(OpenCommand) index.html" Condition="$(OpenCommand) != ''" IgnoreExitCode="true" />
5669
</Target>
5770

5871
<ItemGroup>

0 commit comments

Comments
 (0)