mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-06 02:25:23 +00:00
40 lines
1.1 KiB
Text
40 lines
1.1 KiB
Text
|
#!/bin/bash
|
||
|
# Copyright 2020 The Chromium OS Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
#
|
||
|
# Calculates test coverage of all unit tests in crosvm.
|
||
|
# Requirements:
|
||
|
# $ apt install jq
|
||
|
# $ rustup toolchain install nightly
|
||
|
# $ cargo install grcov rust-covfix
|
||
|
set -ex
|
||
|
cd "${0%/*}/../"
|
||
|
|
||
|
target_dir=$(
|
||
|
cargo metadata --no-deps --format-version 1 |
|
||
|
jq -r ".target_directory"
|
||
|
)
|
||
|
|
||
|
# Delete old coverage profiles
|
||
|
find "$target_dir/debug" -name "*.gcda" -delete
|
||
|
|
||
|
# Run --all tests with coverage profiling options enabled.
|
||
|
CARGO_INCREMENTAL=0 \
|
||
|
RUSTFLAGS="-Zprofile -Ccodegen-units=1 -Copt-level=0 -Coverflow-checks=off \
|
||
|
-Zpanic_abort_tests" \
|
||
|
cargo +nightly test \
|
||
|
--no-fail-fast --features default-no-sandbox,wl-dmabuf,gpu,tpm \
|
||
|
--all --exclude aarch64 \
|
||
|
-- \
|
||
|
--test-threads=1
|
||
|
|
||
|
# Calculate code coverage
|
||
|
grcov "$target_dir/debug" -s . \
|
||
|
--ignore "/*" --ignore-not-existing \
|
||
|
-t lcov --llvm --branch \
|
||
|
-o /tmp/lcov.info
|
||
|
|
||
|
# Apply code coverage fixes
|
||
|
rust-covfix /tmp/lcov.info >lcov.info
|