diff --git a/coverage-local.nu b/coverage-local.nu index c05dac877f..887a7cbc41 100755 --- a/coverage-local.nu +++ b/coverage-local.nu @@ -1,5 +1,6 @@ #!/usr/bin/env nu +let start = (date now) # Script to generate coverage locally # # Output: `lcov.info` file @@ -20,18 +21,32 @@ let-env NUSHELL_CARGO_TARGET = "ci" # This is relevant for tests using the `nu!` macro from `nu-test-support` # see: https://github.com/taiki-e/cargo-llvm-cov#get-coverage-of-external-tests +print "Setting up environment variables for coverage" # Enable LLVM coverage tracking through environment variables # show env outputs .ini/.toml style description of the variables -cargo llvm-cov show-env | from toml | load-env +# In order to use from toml, we need to make sure our string literals are single quoted +# This is especially important when running on Windows since "C:\blah" is treated as an escape +cargo llvm-cov show-env | str replace (char dq) (char sq) -a | from toml | load-env + +print "Cleaning up coverage data" cargo llvm-cov clean --workspace + +print "Building with workspace and profile=ci" # Apparently we need to explicitly build the necessary parts # using the `--profile=ci` is basically `debug` build with unnecessary symbols stripped # leads to smaller binaries and potential savings when compiling and running cargo build --workspace --profile=ci + +print "Running tests with --workspace and profile=ci" cargo test --workspace --profile=ci + # You need to provide the used profile to find the raw data +print "Generating coverage report as lcov.info" cargo llvm-cov report --lcov --output-path lcov.info --profile=ci +let end = (date now) +$"Coverage generation took ($end - $start)." + # To display the coverage in your editor see: # # - https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters