diff --git a/.github/workflows/BuildAndTestOnPullRequests.yml b/.github/workflows/BuildAndTestOnPullRequests.yml index b995b1dc..a089c652 100644 --- a/.github/workflows/BuildAndTestOnPullRequests.yml +++ b/.github/workflows/BuildAndTestOnPullRequests.yml @@ -15,12 +15,44 @@ jobs: - name: Install dependencies run: dotnet restore - - name: Build Stateless solution + - name: Build Stateless solution (signed for distribution) run: dotnet build Stateless.sln --configuration Release --no-restore - - name: Test Stateless - run: dotnet test --no-restore --no-build --configuration Release + - name: Build for coverage analysis (public signed, single target) + run: dotnet build src\Stateless\Stateless.csproj --configuration Release --no-restore -p:PublicSign=true -p:TargetFramework=net8.0 -o src\Stateless\bin\Coverage + - name: Build test project for coverage (public signed) + run: dotnet build test\Stateless.Tests\Stateless.Tests.csproj --configuration Release --no-restore -p:PublicSign=true -p:TargetFramework=net8.0 -o test\Stateless.Tests\bin\Coverage + + - name: Test with coverage (xUnit, Cobertura) + run: dotnet test test\Stateless.Tests\bin\Coverage\net8.0\Stateless.Tests.dll --configuration Release --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=Cobertura + + - name: Install ReportGenerator + run: dotnet tool install -g dotnet-reportgenerator-globaltool + + - name: Generate coverage report + run: | + reportgenerator -reports:"**/coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:"MarkdownSummaryGithub;Html;Badges" + + - name: Append coverage to job summary + if: always() + run: | + $SUMMARY_FILE = "${{ github.workspace }}/coveragereport/SummaryGithub.md" + if (Test-Path $SUMMARY_FILE) { + Get-Content $SUMMARY_FILE | Add-Content $env:GITHUB_STEP_SUMMARY + } else { + "Coverage summary not found at $SUMMARY_FILE" | Add-Content $env:GITHUB_STEP_SUMMARY + } + + - name: Upload coverage artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: coveragereport + if-no-files-found: warn + retention-days: 7 + - name: Pack alpha version if: github.ref == 'refs/heads/dev' && github.event_name == 'push' && github.repository == 'dotnet-state-machine/stateless' run: dotnet pack src\Stateless\Stateless.csproj --version-suffix dev-${{github.run_id}} --configuration Release diff --git a/test/Stateless.Tests/Stateless.Tests.csproj b/test/Stateless.Tests/Stateless.Tests.csproj index 2eed06a8..2665f5f1 100644 --- a/test/Stateless.Tests/Stateless.Tests.csproj +++ b/test/Stateless.Tests/Stateless.Tests.csproj @@ -24,6 +24,7 @@ +