Skip to content

ci(coverage): generate coverage with cargo-llvm-cov - #1357

Merged
BryanFRD merged 2 commits into
mainfrom
ci/tarpaulin-llvm-engine
Oct 28, 2026
Merged

BryanFRD merged 2 commits into
mainfrom
ci/tarpaulin-llvm-engine

Conversation

@BryanFRD

@BryanFRD BryanFRD commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

The Coverage job segfaulted under tarpaulin's ptrace engine on the v7.35.0 release commit (https://github.com/FerrLabs/FerrFlow/actions/runs/40565366095), which changes no code; the previous run on the same tree passed.

Switching tarpaulin to --engine llvm failed differently: its bundled profile parser can't read what rustc 1.99 writes (consistency check for reading counts failed).

This replaces tarpaulin with cargo-llvm-cov, which uses the toolchain's own llvm-tools, so the profile format always matches rustc. The cobertura report keeps repo-relative src/ paths, so the Sonar and Codecov steps are unchanged. Locally: 1300 + 1926 tests pass, 91% line coverage.

The ptrace engine segfaulted mid-run on the v7.35.0 release commit, which changes no code; the previous run on the same tree passed. The LLVM engine instruments at compile time instead of tracing the test process, which removes this class of flaky segfault.

Signed-off-by: BryanFRD <bryanferrando59@gmail.com>

@ferrfleet-interne ferrfleet-interne Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve: --engine llvm is a valid tarpaulin flag, and it works with the stable toolchain and the existing --skip-clean / cobertura output. No blocking findings.

Tarpaulin's llvm engine fails to parse the profiles rustc 1.99 writes ("consistency check for reading counts failed"), and its ptrace engine segfaults intermittently. cargo-llvm-cov reads profiles with the toolchain's own llvm-tools, so the format always matches. The cobertura report keeps repo-relative src/ paths, so Sonar and Codecov consume it unchanged.

Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
@BryanFRD BryanFRD changed the title ci(coverage): run tarpaulin with the llvm engine ci(coverage): generate coverage with cargo-llvm-cov Oct 28, 2026

@ferrfleet-interne ferrfleet-interne Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve: the switch to cargo-llvm-cov is correct (llvm-tools-preview added, cobertura.xml path unchanged for Sonar and Codecov). Nit: the PR title still says "tarpaulin with the llvm engine", so it should be updated before the squash commit lands in the changelog.

@BryanFRD
BryanFRD merged commit 70cd3eb into main Oct 28, 2026
33 checks passed
@BryanFRD
BryanFRD deleted the ci/tarpaulin-llvm-engine branch October 28, 2026 08:36
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