Repository navigation
ci(coverage): gate test assemblies at 100% and stop gating class rows - #379
Merged
Merged
Conversation
…#310) pr.yaml: the three "Enforce 90% coverage threshold" steps are now repo-template's. Stage 1 reads Summary.txt with `IFS= read -r`; a bare `read -r` stripped the indentation the `^[^ ]` filter relies on, so per-class rows were gated as if they were assemblies. Assemblies built from projects under tests/ (identified by location, not name) are held to CODECOV_TEST_MINIMUM=100; src stays at CODECOV_MINIMUM=90. A failing test assembly lists its classes below 100%. release.yaml: same threshold split in its gate, and the coverage- collecting `dotnet test` calls pass --settings coverlet.runsettings, so release instruments the test assemblies exactly as PR CI does. Without that, the release gate saw no test rows and the 100% rule was inert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Chris-Wolfgang
added a commit
that referenced
this pull request
Sep 27, 2026
…istically (#383) RunAsync_Action_CancellationToken_when_cancellation_is_requested_after_ action_started signalled "started" before the loop, so a fast runner could cancel before the first `Task.Delay(10).Wait()`, leaving that line uncovered on some runs. With the 100% test-assembly gate (#379) that made Stage 3 (macOS ARM64) fail at 97.9% on PR #381's run 36285791752 while Linux and Windows passed. The action now signals after a full pass of the loop body, so every line executes before the test cancels. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This is #310 steps 4 and 5, ported from repo-template.
pr.yamlhere is far behind the template in other ways (trigger, guard, gitleaks), so only the coverage-gate steps change; this is not a full template upgrade.pr.yaml: all threeEnforce 90% coverage thresholdsteps (Linux bash, Windows pwsh, macOS bash) are replaced with the template's:Summary.txtwith a barewhile read -r, which strips leading whitespace, so the^[^ ]filter matched ReportGenerator's indented class rows and gated each class as if it were an assembly. It now usesIFS= read -r.tests/are held to the newCODECOV_TEST_MINIMUM: 100, andsrc/stays atCODECOV_MINIMUM: 90. Test assemblies are identified by project location, never by name. A failing test assembly lists its classes below 100%.release.yaml(step 5):Verify coverage threshold. I kept this repo'sdotnet tool install -g dotnet-reportgenerator-globaltool, because the repo has no tool manifest.dotnet testcalls now pass--settings coverlet.runsettings. Without it, release never instrumented the test assemblies, so the 100% rule had nothing to gate. The template has the same gap.Verification
--settings coverlet.runsettings, merged by ReportGenerator:Wolfgang.TryPattern100%,Tests.Unit100%,Tests.Concurrency100%.pr.yamland run under Git Bash:Tests.Unitedited to 97.7%, fails with exit 1 and printsClasses below 100%: 97.7% …PropertyTests.release.yamlare the template's code unchanged apart from the ReportGenerator install line. I haven't executed them locally; CI runs Stages 2 and 3.Merge notes
.github/workflows/, so it needs an admin-bypass merge.scripts/build-pr.ps1to match.Refs #310
🤖 Generated with Claude Code