I want to measure test coverage for the
vparser library, and this
is my first time measuring coverage with Rust. Some notes for future reference.
First, run the tests with instrumentation enabled:
> RUSTFLAGS="-C instrument-coverage" cargo test -p vparser
Compiling vparser v0.1.0 (/home/hugo/src/git.sr.ht/~whynothugo/vdirsyncer-rs/vparser)
Finished test [unoptimized + debuginfo] target(s) in 0.33s
Running unittests src/lib.rs (target/debug/deps/vparser-5204a1fc06fb7f74)
In some cases, you might need to merge multiple
profraw files into a single
one. This was not required in this particular case, but should be kept in mind
if multiple files were generated.
llvm-profdata merge -sparse vparser/default_*.profraw -o vparser.profdata
Finally, show coverage with:
llvm-cov show --instr-profile vparser.profdata --object target/debug/deps/vparser-5204a1fc06fb7f74 --show-line-counts-or-regions
Note that the path
target/debug/deps/vparser-5204a1fc06fb7f74 should match
the one printed by
cargo test above.
llvm-cov are provided by the
It would be nice to find a plugin that reflects these results inside neovim (to quickly spot lines that are not covered).