use grcov to get rust code coverage
This commit is contained in:
88
scripts/coverage.sh
Executable file
88
scripts/coverage.sh
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/bin/bash
|
||||
readonly GRCOV_DOWNLOAD="https://github.com/mozilla/grcov/releases/download/v0.8.2/grcov-linux-x86_64.tar.bz2"
|
||||
readonly TMP_DIR=$(pwd)/tmp
|
||||
readonly PROJECT_ROOT=$(pwd)
|
||||
readonly GRCOV_TARBAL="$TMP_DIR/grcov.tar.bz2"
|
||||
readonly GRCOV="$TMP_DIR/grcov"
|
||||
|
||||
clean_up() {
|
||||
cd $PROJECT_ROOT
|
||||
/bin/rm default.profraw lcov.info *.profraw || true
|
||||
cd target
|
||||
/bin/rm default.profraw lcov.info *.profraw || true
|
||||
cargo clean
|
||||
}
|
||||
|
||||
check_arg(){
|
||||
if [ -z $1 ]
|
||||
then
|
||||
help
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
match_arg() {
|
||||
if [ $1 == $2 ] || [ $1 == $3 ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
download() {
|
||||
if [ ! -e $GRCOV ];
|
||||
then
|
||||
echo "[*] Downloading grcov"
|
||||
wget --quiet --output-doc=$GRCOV_TARBAL $GRCOV_DOWNLOAD;
|
||||
cd $TMP_DIR
|
||||
tar -xf $GRCOV_TARBAL;
|
||||
cd $PROJECT_ROOT
|
||||
fi
|
||||
}
|
||||
|
||||
build_and_test() {
|
||||
export RUSTFLAGS="-Zinstrument-coverage"
|
||||
cd $PROJECT_ROOT
|
||||
|
||||
echo "[*] Building project"
|
||||
cargo build
|
||||
|
||||
export LLVM_PROFILE_FILE="target/libmedium-%p-%m.profraw"
|
||||
|
||||
echo "[*] Running tests"
|
||||
cargo test
|
||||
|
||||
echo "[*] Generating coverage"
|
||||
$GRCOV target/ --binary-path \
|
||||
./target/debug/ \
|
||||
-s . -t lcov --branch \
|
||||
--ignore-not-existing \
|
||||
--ignore "../*" -o target/lcov.info
|
||||
|
||||
$GRCOV target/ --binary-path \
|
||||
./target/debug/ \
|
||||
-s . -t html --branch \
|
||||
--ignore-not-existing \
|
||||
--ignore "../*" -o target/coverage.html
|
||||
|
||||
}
|
||||
|
||||
run_coverage() {
|
||||
cd $PROJECT_ROOT
|
||||
mkdir $TMP_DIR || true
|
||||
clean_up
|
||||
download
|
||||
build_and_test
|
||||
}
|
||||
|
||||
check_arg $1
|
||||
|
||||
if match_arg $1 'c' '--coverage'
|
||||
then
|
||||
run_coverage
|
||||
else
|
||||
echo "undefined option"
|
||||
exit 1
|
||||
fi
|
Reference in New Issue
Block a user