Mesurer le test coverage en Rust avec kcov

Je me suis essayé à intégrer a mesurer le test coverage du projets duniter-rs avec kcov, mais je n’ai pas réussi, je laisse donc ça là avec toutes les indications pour qui souhaiterai finir ce que j’ai commencer :

J’ai suivi le tutoriel : Tutorial: How to collect test coverages for Rust project - tutorials - The Rust Programming Language Forum

Et je n’ai pas réussi, ni en local, ni dans docker.

J’ai bien compiler kcov avec les paquets binutils-dev et libiberty-dev afin d’avoir l’option --verify fonctionnelle, j’ai bien désactivé les sécurités dans le runner docker avec l’option security_opt = ["seccomp:unconfined"], j’ai bien compiler le binaires rust avec le flag “-C link-dead-code”, et enfin j’ai bien ajouter l’option --include-path=$(pwd) comme sugérer mais rien n’y fait, kcov n’arrive pas a éxécuter les tests :

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out

kcov: 234 invalid breakpoints skipped in /builds/nodes/rust/duniter-rs/target/debug/duniter_wotb-0f7604789b798d32

Il semble que le problème provienne de Rust et ne soit pas encore résolu : Generated debuginfo may apparently be ill-formed · Issue #27324 · rust-lang/rust · GitHub

Mais peut être aussi que quelque chose m’a échapper :

l’image docker est là : Sign in · GitLab
Et le script de ci ici : https://git.duniter.org/nodes/rust/duniter-rs/blob/ci/.gitlab-ci.yml

je précise que j’ai exactement le même comportement en local et dans docker, le problème ne viens donc pas de docker.

2 Likes

Pour m’assurer que le problème ne viens pas du fait que duniter-rs est un workspace et non une crate, je viens de tester sur une crate simple et j’ai exactement la même erreur : https://git.duniter.org/librelois/minigrep/-/jobs/1814

Ce qui est bizarre c’est que dans les deux cas j’ai 234 invalid breakpoints alors qu’il s’agit de projets différents, kcov doit essayer d’inclure des librairies ou qqch dans le genre :confused:

1 Like