Skip to content

ci: upload Windows coverage and fix the Codecov patch target - #661

Merged
ion-alpha-dev merged 1 commit into
mainfrom
ci/coverage-windows-upload
Nov 2, 2026
Merged

ion-alpha-dev merged 1 commit into
mainfrom
ci/coverage-windows-upload

Conversation

@ion-alpha-dev

@ion-alpha-dev ion-alpha-dev commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

What

The Windows test leg now runs with coverage and uploads it to Codecov beside the Linux report. codecov.yml sets a fixed 90% patch target in place of Codecov's default, turns the project status off, and drops two stale ignore entries.

Why

Only Linux uploaded, so the Windows-only code (about 2,300 lines of *_windows.go, plus every runtime.GOOS == "windows" branch in shared code) read as uncovered on every pull request that touched it, although the Windows leg runs those tests. #658 was red on codecov/patch largely for that reason.

The patch target defaulted to the project's own coverage, 94.4%, so three or four untested error paths in a small diff failed it. 90% sits just under dev/coverage-floor (91.1%). The project status is off because dev/coverfloor already gates project coverage in CI.

sandbox/egress_linux.go and sandbox/forward_linux.go were ignored because the runner skipped their tests and reported 10% and 50%. The test job now lifts the user-namespace restriction and sets FLYNN_TEST_REQUIRE_CONFINEMENT, and main's latest coverage profile (run 41419408636) has them at 84.4% and 72.2%, so the ignore was hiding real numbers.

How to verify

On this PR's run: the Windows test job has an "Upload coverage" step that succeeds, and the Codecov report lists a Windows flag beside Linux. curl --data-binary @codecov.yml https://codecov.io/validate returns Valid!.

Notes for reviewers

The cost is atomic coverage instrumentation on the Windows leg, which was the slowest test job at 16.0 minutes on main's last run (Linux 12.3, macOS 7.6). This PR's run gives the new figure. If the increase is too much, the alternative is a separate Windows coverage job that runs only the packages with Windows-specific code, so the race leg keeps its current time.

macOS stays without coverage: about 140 lines are macOS-only.

dev/coverfloor is unchanged and still reads the Linux profile alone.

Only the ubuntu leg uploaded coverage, so the Windows-only code (about
2,300 lines of *_windows.go and every runtime.GOOS == "windows" branch
in shared code) read as uncovered on every pull request that touched
it, though the Windows leg runs those tests. The Windows test leg now
runs with coverage and uploads it under a Windows flag; Codecov counts
a line covered when either report covers it. macOS stays without
coverage: its platform-only code is about 140 lines.

The patch target was Codecov's default, the project's own coverage
(94.4% at the time), so a few untested error paths in a small diff
failed it. It is now a fixed 90%, just under dev/coverage-floor.
The project status is off; dev/coverfloor is the project gate.
wait_for_ci is stated explicitly so the status posts once, after both
uploads.

sandbox/egress_linux.go and sandbox/forward_linux.go come out of the
ignore list. They were ignored because the runner skipped their tests
(10% and 50%), but the test job now lifts the user-namespace
restriction and requires confinement; main's latest profile has them
at 84.4% and 72.2%.

Signed-off-by: Ion Alpha <[email protected]>
@codecov

codecov Bot commented Nov 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ion-alpha-dev
ion-alpha-dev merged commit 541b1e4 into main Nov 2, 2026
35 checks passed
@ion-alpha-dev
ion-alpha-dev deleted the ci/coverage-windows-upload branch November 2, 2026 12:55
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 2, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant