Skip to content

ci: separate lint, test, and coverage into parallel jobs#35

Merged
mvallebr merged 1 commit into
mainfrom
ci/separate-lint-test-coverage
Jun 18, 2026
Merged

ci: separate lint, test, and coverage into parallel jobs#35
mvallebr merged 1 commit into
mainfrom
ci/separate-lint-test-coverage

Conversation

@mvallebr

@mvallebr mvallebr commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Split the single test job in ci.yml (which ran lint + install + tests sequentially) into three independent parallel jobs:

  • lint — only needs ruff via uvx, skips package installation (faster)
  • test — builds/installs the wheel and runs pytest
  • total-coverage — runs pytest --cov and reports coverage (gated on pull_request events)

Total Coverage

The total-coverage job is the total coverage check — no separate API-created check run. The per-file coverage report and total percentage are written to $GITHUB_STEP_SUMMARY (visible on the job's summary page), and the job fails if total coverage drops below 80%.

Patch Coverage

Remains a dedicated GitHub Check Run (created via the API) with its own 80% threshold, since it measures a distinct metric (coverage of lines changed in the PR).

Consolidation

Merged the standalone test-coverage.yml workflow into the total-coverage job and deleted the old file. All CI now lives in one workflow.

Pre-commit behavior is unchanged locally — everything still runs together via the pytest hook.

@mvallebr mvallebr force-pushed the ci/separate-lint-test-coverage branch from ba8e5df to 292cdf2 Compare June 18, 2026 12:26
@mvallebr mvallebr force-pushed the ci/separate-lint-test-coverage branch from 292cdf2 to 0ef5979 Compare June 18, 2026 12:31
Split the single test job in ci.yml (which ran lint + install + tests
sequentially) into three independent parallel jobs:

- lint — only needs ruff via uvx, skips package installation (faster)
- test — builds/installs the wheel and runs pytest
- total-coverage — runs pytest --cov, posts Total Coverage and Patch
  Coverage checks to GitHub (gated on pull_request events)

The Total Coverage check now enforces an 80% threshold (previously
always success) and includes a per-file coverage report table in its
summary, so the full report is visible directly on the PR checks
without digging into job logs. Patch Coverage keeps its 80% threshold.

Consolidated the standalone test-coverage.yml workflow into the
total-coverage job and deleted the old file. Pre-commit behavior is
unchanged locally — everything still runs together via the pytest hook.
@mvallebr mvallebr force-pushed the ci/separate-lint-test-coverage branch from 0ef5979 to 2441ba3 Compare June 18, 2026 12:55
@mvallebr mvallebr merged commit 2377af9 into main Jun 18, 2026
4 checks passed
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