Skip to content
Open
Show file tree
Hide file tree
Changes from 46 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
2b71fb7
Run Python coverage tooling in a venv
leynos Apr 26, 2026
009141b
Use uv tool run for Ruff make targets
leynos Apr 26, 2026
c6669c4
Resolve tool paths in make checks
leynos Apr 26, 2026
fb502bc
Refine coverage venv command handling
leynos Apr 27, 2026
a93f3b7
Recreate broken coverage venvs
leynos Apr 27, 2026
cb49e90
Bundle coverage format test parameters
leynos Apr 27, 2026
6a8c09b
Mark coverage XML stub parameters unused
leynos Apr 27, 2026
2ab45d6
Document coverage venv lifecycle
leynos Apr 27, 2026
600e710
Stabilise markdownlint for branch docs
leynos Apr 27, 2026
23b373e
Share coverage venv test scaffolding
leynos Apr 27, 2026
ba7e729
Remove duplicate coverage venv cache test
leynos Apr 27, 2026
006b165
Document coverage venv setup in action README
leynos Apr 27, 2026
1a302b8
Fix generate coverage README markdown lint
leynos Apr 27, 2026
89cfd3a
Decompose coverage venv command predicate
leynos Apr 27, 2026
3827e03
Simplify coverage venv setup
leynos Apr 27, 2026
7c9e72f
Sync project dependencies into coverage venv
leynos Apr 27, 2026
c759a4e
Harden coverage venv cache repair
leynos Apr 27, 2026
f4fbdce
Clarify markdownlint fallback warning
leynos Apr 27, 2026
2b60470
Extract coverage venv recreation assertions
leynos Apr 27, 2026
3d8f177
Rename coverage venv rebuild assertion helper
leynos Apr 27, 2026
a9f3b44
Cover coverage venv repair edge cases
leynos Apr 27, 2026
145b90b
Guard coverage command test venv detection
leynos Apr 27, 2026
533fa20
Run action-validator per action metadata file
leynos Apr 27, 2026
ee24905
Extract coverage venv recreation helpers
leynos Apr 27, 2026
3c20bbd
Move markdownlint logic into helper script
leynos Apr 27, 2026
3588178
Prefer Bun action-validator and quote markdownlint command
leynos Apr 27, 2026
ab88554
Extract default coverage venv rebuild assertion
leynos Apr 27, 2026
e7b1ce7
Use executable stems in coverage tests
leynos Apr 27, 2026
aaf1276
Merge non-Cobertura coverage command tests
leynos Apr 28, 2026
13da80f
Document coverage venv migration and add integration tests
leynos Apr 28, 2026
d712151
Fix AGENTS markdown table alignment
leynos Apr 28, 2026
d002a85
Handle invalid coverage venv paths
leynos Apr 28, 2026
394def3
Fix AGENTS documentation links and tool lookup
leynos Apr 28, 2026
d617af4
Fix coverage design wording
leynos Apr 28, 2026
ee1226c
Refactor run_python integration test runner
leynos Apr 28, 2026
a8aa693
Remove unused run_python test helper
leynos Apr 28, 2026
92d0b34
Handle dangling coverage venv symlinks
leynos Apr 29, 2026
dc432bb
Reduce run_python complexity
leynos Apr 29, 2026
bcbc0f1
Parametrize coverage venv failure tests
leynos Apr 29, 2026
e26e9de
Target uv sync at coverage venv
leynos Apr 29, 2026
8fe680e
Validate run_python integration env contract
leynos Apr 29, 2026
217dc00
Bundle uv failure test parameters
leynos Apr 29, 2026
6086cec
Document coverage venv internals
leynos Apr 29, 2026
dad0cf6
Fix developer guide markdownlint
leynos Apr 29, 2026
6865952
Handle coverage venv bootstrap failures
leynos Apr 29, 2026
3db43ba
Extract run_python main helpers
leynos Apr 29, 2026
77ca00c
Combine run_python coverage execution helper
leynos Apr 29, 2026
c811865
Improve run_python observability and baseline test
leynos Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/actions/generate-coverage/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## v1.3.14 (2026-04-28)

- Run Python coverage tooling in an isolated, job-local virtual environment
(`.venv-coverage`) instead of using `uv run --with`. The venv is created
once per process, reused across calls within the same job, and repaired
automatically when the Python executable is missing.
- Project dependencies are synced into the venv via `uv sync --inexact
--python`; `slipcover`, `pytest`, and `coverage` are installed via
`uv pip install --python` without `--system`.
- Broken-venv recovery: if `.venv-coverage` exists but its Python executable
is absent or a non-directory placeholder occupies its path, the directory is
removed and recreated before proceeding.

## v1.3.13 (2026-04-16)

- Override Cranelift coverage builds via
Expand Down
11 changes: 8 additions & 3 deletions .github/actions/generate-coverage/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ projects. The action uses `cargo llvm-cov` (with `cargo nextest` by default)
when a `Cargo.toml` is present and `slipcover` with `pytest` when a
`pyproject.toml` is present. If the repository root does not contain a Cargo
manifest, set `cargo-manifest` to point to a nested `Cargo.toml`. It installs
`slipcover` and `pytest` automatically via `uv` before running the tests,
leveraging ``uv run --with`` so no system-level Python installs are required.
the project dependencies plus `slipcover`, `pytest`, and `coverage`
automatically via `uv` into an isolated throwaway virtual environment
(`.venv-coverage`) before running the tests, so no system-level Python installs
are required.
When Rust coverage is required, `cargo-llvm-cov` and `cargo-nextest` are
installed automatically. If both configuration files are present, coverage is
run for each language and the Cobertura reports are merged using
Expand Down Expand Up @@ -45,6 +47,7 @@ codegen-backend-related variables first, and then merges
`get_cargo_coverage_env(manifest_path)` on top so workflow-level Cranelift
exports are not treated as the default coverage behaviour.

<!-- markdownlint-disable MD013 -->
```mermaid
sequenceDiagram
actor GitHubActions
Expand Down Expand Up @@ -78,6 +81,7 @@ sequenceDiagram
_run_cargo-->>run_rust_py: stdout
end
```
<!-- markdownlint-enable MD013 -->

## Cranelift codegen backend support

Expand Down Expand Up @@ -123,6 +127,7 @@ Known limitations:

## Inputs

<!-- markdownlint-disable MD013 -->
| Name | Description | Required | Default |
| --- | --- | --- | --- |
| features | Enable Cargo (Rust) features; space- or comma-separated. | no | |
Expand All @@ -134,11 +139,11 @@ Known limitations:
| with-ratchet | Fail if coverage drops below baseline | no | `false` |
| artefact-name-suffix | Additional suffix appended to the uploaded coverage artefact | no | |
| baseline-rust-file | Rust baseline path | no | `.coverage-baseline.rust` |
<!-- markdownlint-disable-next-line MD013 -->
| baseline-python-file | Python baseline path | no | `.coverage-baseline.python` |
| with-cucumber-rs | Run cucumber-rs scenarios under coverage | no | `false` |
| cucumber-rs-features | Path to cucumber feature files | no | |
| cucumber-rs-args | Extra arguments for cucumber | no | |
<!-- markdownlint-enable MD013 -->

\* `lcov` is only supported for Rust projects, while `coveragepy` is only
supported for Python projects. Mixed projects must use `cobertura`.
Expand Down
Loading
Loading