Skip to content

ci: report test coverage - #138

Merged
Ayinkx merged 3 commits into
AyinkxLab:mainfrom
jiggy-techy:ci/test-coverage
Oct 28, 2026
Merged

Ayinkx merged 3 commits into
AyinkxLab:mainfrom
jiggy-techy:ci/test-coverage

Conversation

@jiggy-techy

@jiggy-techy jiggy-techy commented Oct 28, 2026 •

Copy link
Copy Markdown

Summary

Adds coverage reporting to CI so gaps are visible on pull requests.

  • Adds a Coverage job using cargo-llvm-cov (LLVM source-based coverage), pinned to a specific action revision.
  • Generates target/coverage/lcov.info and a human-readable summary.txt, writes the summary to the GitHub Actions job summary, and uploads both files as the coverage artifact.
  • Keeps the coverage floor advisory: continue-on-error: true with COVERAGE_ADVISORY_MIN_LINES currently 0, so coverage is reported without failing PRs while a baseline is established.
  • Documents the tool, commands, artifacts, and local workflow in docs/testing.md, with a short pointer from docs/ci.md.

Verification

cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace

All pass. The workflow YAML was parsed successfully and the coverage job is present with its seven steps.

Closes #106

MSRV fix

The first CI run showed the existing MSRV (1.85.0) job failing before compilation because the locked dependency set requires Rust 1.88 (wasmparser 0.259, stellar-strkey 0.0.18, serde_with 3.23). This PR now aligns the workspace rust-version and the MSRV job to 1.88.0 so future PRs do not inherit that failure.

Verified with the 1.88.0 toolchain that cargo metadata --locked resolves successfully.

Security audit fix

The RustSec audit job then failed on noyalib 0.0.5 (RUSTSEC-2026-0333), pulled in by the unmaintained serde_yml crate. This PR replaces serde_yml with the maintained serde_yaml_ng fork (same from_str API). cargo tree confirms noyalib and serde_yml are no longer in the dependency graph, and YAML configuration tests still pass.
Local audit verification after the replacement:

cargo audit --file Cargo.lock
  Scanning Cargo.lock for vulnerabilities (181 crate dependencies)
  warning: 1 allowed warning found (unsafe-libyaml unmaintained)
  exit=0

The vulnerable noyalib advisory is gone; only the non-failing warning remains.

Add a Coverage job using cargo-llvm-cov. It writes a summary to the job summary, uploads lcov.info and summary.txt as an artifact, and keeps the coverage floor advisory via a documented, non-blocking threshold. Document the tool and local workflow in docs/testing.md.

Closes AyinkxLab#106
The locked dependency set requires Rust 1.88 (wasmparser 0.259, stellar-strkey 0.0.18, serde_with 3.23), so the 1.85 MSRV job failed at resolution. Align the workspace rust-version and the CI MSRV job with the dependencies that are actually locked.
cargo audit flagged noyalib 0.0.5 (RUSTSEC-2026-0333), pulled in by the unmaintained serde_yml crate. serde_yaml_ng is the maintained fork with the same API for parsing YAML configuration; noyalib and serde_yml are removed from the lockfile.
@Ayinkx
Ayinkx merged commit 7358b1d into AyinkxLab:main Oct 28, 2026
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.

ci: report test coverage

2 participants