lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

commit e0e3c897b2919b4c1130bc7cf97d525bd655bff4
parent 38a0c041f4a176810b33f7559a759a1c2f96fc4d
Author: triesap <tyson@radroots.org>
Date:   Fri, 13 Mar 2026 00:58:31 +0000

build: fix coverage toolchain for llvm-cov

- add llvm-tools-preview to the nightly coverage toolchain so cargo-llvm-cov can find llvm-cov and llvm-profdata
- preserve blocking coverage failures by emitting a failing gate report when per-crate summary artifacts are missing
- keep the change scoped to the nix coverage lane and its artifact contract without broadening into unrelated workflow cleanup
- verify with cargo check and cargo test for xtask plus git diff --check while narrow dockerized nix evaluation remains slow in this environment

Diffstat:
Mnix/common.nix | 48++++++++++++++++++++++++++++++++++++++++++++++++
Mnix/toolchains.nix | 9++++++---
2 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/nix/common.nix b/nix/common.nix @@ -244,6 +244,54 @@ EOF [ -n "''${crate}" ] || continue safe_crate="''${crate//-/_}" crate_dir="target/sdk-coverage/''${safe_crate}" + crate_status="$(awk -F: -v crate="''${crate}" '$1 == crate { status = $2 } END { print status }' target/sdk-coverage/coverage-report-status.txt)" + + if [ ! -f "''${crate_dir}/coverage-summary.json" ] || [ ! -f "''${crate_dir}/coverage-lcov.info" ]; then + fail_reason="missing-coverage-artifacts" + if [ -n "''${crate_status}" ] && [ "''${crate_status}" != "ok" ]; then + fail_reason="''${crate_status}" + fi + + cat > "''${crate_dir}/coverage-gate-blocking.json" <<EOF + { + "scope": "''${crate}-blocking", + "thresholds": { + "executable_lines": 100, + "functions": 100, + "regions": 100, + "branches": 100, + "branches_required": true + }, + "measured": { + "executable_lines_percent": 0, + "executable_lines_source": "da", + "functions_percent": 0, + "branches_percent": null, + "branches_available": false, + "summary_lines_percent": 0, + "summary_regions_percent": 0 + }, + "counts": { + "executable_lines": { + "covered": 0, + "total": 0 + }, + "branches": { + "covered": 0, + "total": 0 + } + }, + "result": { + "pass": false, + "fail_reasons": [ + "''${fail_reason}" + ] + } + } +EOF + continue + fi + cargo run -q -p xtask -- sdk coverage report \ --scope "''${crate}-blocking" \ --summary "''${crate_dir}/coverage-summary.json" \ diff --git a/nix/toolchains.nix b/nix/toolchains.nix @@ -3,23 +3,26 @@ let toolchain = builtins.fromTOML (builtins.readFile ../rust-toolchain.toml); stableVersion = toolchain.toolchain.channel; stableTargets = toolchain.toolchain.targets or []; - extensions = [ + stableExtensions = [ "clippy" "rust-analyzer" "rust-src" "rustfmt" ]; + coverageExtensions = stableExtensions ++ [ + "llvm-tools-preview" + ]; in { stable = pkgs.rust-bin.stable.${stableVersion}.default.override { - inherit extensions; + extensions = stableExtensions; targets = stableTargets; }; coverage = pkgs.rust-bin.selectLatestNightlyWith ( nightly: nightly.default.override { - inherit extensions; + extensions = coverageExtensions; targets = stableTargets; } );