Files
anki/tools/coverage/coverage-rust.bat
Andrew Sanchez 257b5b0581 Use nextest for Rust coverage
Rust coverage previously invoked cargo-llvm-cov's default test runner directly, while normal Rust tests run through cargo nextest via ninja check:rust_test. That created a gap where coverage could use different execution semantics and timing than the test path developers and CI rely on.

Install the same pinned cargo-nextest binary into out/bin when coverage needs it, put that directory on PATH for cargo-llvm-cov's nextest integration, and pass through the same nextest reporter flags used by the normal Rust test target. This keeps coverage behavior aligned across Unix and Windows launchers while preserving the existing cargo-llvm-cov report generation.
2026-05-21 16:01:36 -04:00

34 lines
1.3 KiB
Batchfile

@echo off
setlocal
rem cargo-llvm-cov's llvm-profdata uses the host toolchain, which is incompatible
rem with the profraw files produced when running on Windows ARM64.
if "%PROCESSOR_ARCHITECTURE%"=="ARM64" (
echo Rust coverage is not supported on Windows ARM64 ^(llvm-profdata format mismatch^).
echo Run on Linux or let CI enforce coverage.
exit /b 0
)
set "outdir=out\coverage\rust"
set "LLVMCOVPATH=out\bin"
if not exist %outdir% mkdir %outdir%
if not exist %LLVMCOVPATH% mkdir %LLVMCOVPATH%
if not exist %LLVMCOVPATH%\cargo-llvm-cov.exe (
cargo install cargo-llvm-cov --version 0.8.4 --locked --root out || exit /b 1
)
if not exist %LLVMCOVPATH%\cargo-nextest.exe (
cargo install cargo-nextest --version 0.9.99 --locked --no-default-features --features default-no-update --root out || exit /b 1
)
set "ANKI_TEST_MODE=1"
set "PATH=%LLVMCOVPATH%;%PATH%"
%LLVMCOVPATH%\cargo-llvm-cov llvm-cov nextest --workspace --locked --json --summary-only ^
--output-path %outdir%\coverage-summary.json --fail-under-lines 60 ^
--color=always --failure-output=final --status-level=none || exit /b 1
if "%1"=="--html" (
%LLVMCOVPATH%\cargo-llvm-cov llvm-cov report --html --output-dir %outdir%\html || exit /b 1
echo Rust coverage report: %outdir%\html\index.html
)