Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,29 @@ jobs:
dotnet-version: '9.0.x'

- name: Restore packages
run: nuget restore
run: dotnet restore

- name: Restore tools
run: dotnet tool restore

- name: Build
run: dotnet build -c Release

- name: Capture Coverage
shell: pwsh
run: |
dotnet test --collect:"XPlat Code Coverage"
$coverageFiles = Get-ChildItem -Path . -Recurse -Filter coverage.cobertura.xml
$coveragePaths = $coverageFiles | ForEach-Object { $_.FullName }
$reportsArg = '"' + ($coveragePaths -join ";") + '"'
dotnet tool run reportgenerator -reports:$reportsArg "-targetdir:coverage-report" "-filefilters:-*.g.cs" "-reporttypes:$reportType"

- name: Upload Coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage-report

- name: Mutation testing
run: |
dotnet tool restore
Expand Down
5 changes: 4 additions & 1 deletion AtemSharp.Tests/AtemSharp.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2"/>
<PackageReference Include="coverlet.collector" Version="6.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="JetBrains.Annotations" Version="2025.2.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0"/>
Expand Down
37 changes: 37 additions & 0 deletions Run-Coverage.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Remove old reports
Get-ChildItem -Path . -Recurse -Filter coverage.cobertura.xml | Remove-Item

# Stop the script immediately on any error
$ErrorActionPreference = "Stop"

# Run tests with coverage collection
dotnet test --collect:"XPlat Code Coverage"

# Find the latest coverage.cobertura.xml file under TestResults
$coverageFiles = Get-ChildItem -Path . -Recurse -Filter coverage.cobertura.xml

if ($coverageFiles.Count -eq 0) {
Write-Error "No coverage report files found!"
exit 1
}

# Collect full paths of all coverage files
$coveragePaths = $coverageFiles | ForEach-Object { $_.FullName }

# Join paths with semicolon (and quote the whole string for safety)
$reportsArg = '"' + ($coveragePaths -join ";") + '"'

# Build the report output path
$targetDir = "coverage-report"
$reportType = "Html"

# Generate combined HTML report
dotnet tool restore
dotnet tool run reportgenerator `
-reports:$reportsArg `
"-targetdir:$targetDir" `
"-filefilters:-*.g.cs" `
"-reporttypes:$reportType"

New-Item -Path "$targetDir" -Name ".gitignore" -ItemType "File" -Value "*" -Force
Write-Host "Coverage report written to coverage-report\index.html"