Skip to content

Publish this repo's own coverage report - #25

Merged
tschm merged 1 commit into
mainfrom
ci/publish-own-coverage
Aug 30, 2026
Merged

Publish this repo's own coverage report#25
tschm merged 1 commit into
mainfrom
ci/publish-own-coverage

Conversation

@tschm

@tschm tschm commented Aug 30, 2026

Copy link
Copy Markdown
Member

The board reads coverage from a coverage-report artifact, and this repo was one of two that never produced one — so the collector reported "no report" about itself. It now measures coverage and uploads it in the same shape every other repo on the board uses.

Measured: 75.4% of 845 lines. Notably not 100%, unlike the nineteen repos already reporting, so the column finally has some variance to show. The gap is mostly __main__.py at 30% — the refresh loops and signal handling, which the tests don't drive.

Three details that would each have failed silently

  • The artifact name must be exactly coverage-report — the collector looks for that and nothing else.
  • The upload path is repo-relative (collector/_tests/coverage.xml), not relative to the job's working-directory. defaults.run.working-directory applies to run steps only, and this is a uses step. Getting it wrong uploads an empty artifact and the column reads "no report" while CI stays green.
  • if-no-files-found: error, so a future change that stops producing the file fails the job rather than quietly emptying the column.

On the denominator

coverage source is pinned to the package in pyproject.toml rather than left to default — measuring the tests too would inflate the figure with lines that are executed by definition. That denominator is deliberately narrower than jq_local_code_lines, which counts every tracked source file. Same distinction already documented for the other repos.

Verified

The collector's own parser accepts the output: _coverage() returns (75.4, 845) on the exact file this job uploads. Plus 84 tests, ruff, check-dashboard.py, scripts parse.

Leaves rhiza-task as the last Jebel-Quant repo with no coverage report.

The board reads coverage from a `coverage-report` artifact, and this repo was
one of two that never produced one - so the collector reported "no report"
about itself. It now measures coverage and uploads it in the same shape every
other repo on the board uses.

Measured: 75.4% of 845 lines. Notably not 100%, unlike the nineteen repos
already reporting, so the column finally has some variance to show. The gap is
mostly __main__.py at 30% - the refresh loops and signal handling, which the
tests do not drive.

Three details that would each have failed silently:

  * The artifact name must be exactly `coverage-report`; the collector looks
    for that and nothing else.
  * The upload path is repo-relative (collector/_tests/coverage.xml), not
    relative to the job's working-directory. defaults.run.working-directory
    applies to `run` steps only, and this is a `uses` step - getting it wrong
    uploads an empty artifact and the column reads "no report" while CI stays
    green.
  * if-no-files-found: error, so a future change that stops producing the file
    fails the job instead of quietly emptying the column.

coverage source is pinned to the package in pyproject.toml rather than left to
default. Measuring the tests too would inflate the figure with lines that are
executed by definition. That denominator is deliberately narrower than
jq_local_code_lines, which counts every tracked source file - the same
distinction documented for the other repos.

Verified the collector's own parser accepts the output: _coverage() returns
(75.4, 845) on the file this job uploads.
@tschm
tschm merged commit b426a28 into main Aug 30, 2026
4 checks passed
@tschm
tschm deleted the ci/publish-own-coverage branch August 30, 2026 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant