Background
PR #279 introduces pytest-xdist parallelism to the generate-coverage composite action. Per-worker coverage data is merged by slipcover's built-in xdist plugin, which requires slipcover>=1.0.18. The concurrency model of that merging is not currently documented or tested within this repository.
Work required
-
Documentation — add a section to docs/generate-coverage-design.md (or a dedicated ADR) explaining how slipcover 1.0.18's xdist plugin merges per-worker .coverage files, including the lifecycle (worker startup, mid-run accumulation, teardown merge), the behaviour under partial worker failure, and the interaction with --omit.
-
Integration tests — add at least one integration test that actually executes pytest-xdist (with -n 2 or -n auto) against a minimal Python project fixture and asserts that the merged coverage output is correct (i.e. coverage from all workers is present in the final report).
-
Failure-mode coverage — clarify and, where feasible, test the behaviour when a worker process crashes mid-run: does slipcover emit a partial result, a zero-coverage result, or an error exit?
References
Raised by @leynos.
Background
PR #279 introduces pytest-xdist parallelism to the
generate-coveragecomposite action. Per-worker coverage data is merged by slipcover's built-in xdist plugin, which requiresslipcover>=1.0.18. The concurrency model of that merging is not currently documented or tested within this repository.Work required
Documentation — add a section to
docs/generate-coverage-design.md(or a dedicated ADR) explaining how slipcover 1.0.18's xdist plugin merges per-worker.coveragefiles, including the lifecycle (worker startup, mid-run accumulation, teardown merge), the behaviour under partial worker failure, and the interaction with--omit.Integration tests — add at least one integration test that actually executes pytest-xdist (with
-n 2or-n auto) against a minimal Python project fixture and asserts that the merged coverage output is correct (i.e. coverage from all workers is present in the final report).Failure-mode coverage — clarify and, where feasible, test the behaviour when a worker process crashes mid-run: does slipcover emit a partial result, a zero-coverage result, or an error exit?
References
Raised by @leynos.