pushd "$(dirname "${BASH_SOURCE[0]}")/.."
coverage_dir="target/coverage"
cargo clean
rm -rf "${coverage_dir}"
mkdir -p "${coverage_dir}"
mkdir -p "${coverage_dir}/raw"
RUSTFLAGS="-C instrument-coverage" \
LLVM_PROFILE_FILE="${coverage_dir}/raw/coverage-%m.profraw" \
cargo test --tests --all-features
RUSTFLAGS="-C instrument-coverage" \
LLVM_PROFILE_FILE="${coverage_dir}/raw/coverage-%m.profraw" \
cargo test --no-run --all-features --message-format=json | jq -r "select(.profile.test == true) | .filenames[]" | grep -v dSYM - > "${coverage_dir}/raw/filenames.txt"
cargo profdata -- merge -sparse "${coverage_dir}/raw/coverage-"*".profraw" -o "${coverage_dir}/raw/merge.profdata"
cargo cov -- report \
--use-color \
--summary-only \
--Xdemangler=rustfilt \
--ignore-filename-regex='/.cargo/registry' \
--ignore-filename-regex='/.rustup/toolchains' \
--ignore-filename-regex='/rustc' \
"--instr-profile=${coverage_dir}/raw/merge.profdata" \
$(printf -- "-object %s " $(cat "${coverage_dir}/raw/filenames.txt")) \
> "${coverage_dir}/report_all.txt"
cargo cov -- report \
--use-color \
--summary-only \
--Xdemangler=rustfilt \
--ignore-filename-regex='/.cargo/registry' \
--ignore-filename-regex='/.rustup/toolchains' \
--ignore-filename-regex='/rustc' \
--ignore-filename-regex='tests/' \
"--instr-profile=${coverage_dir}/raw/merge.profdata" \
$(printf -- "-object %s " $(cat "${coverage_dir}/raw/filenames.txt")) \
> "${coverage_dir}/report_without_tests.txt"
cargo cov -- show --format=html \
--Xdemangler=rustfilt \
--ignore-filename-regex='/.cargo/registry' \
--ignore-filename-regex='/.rustup/toolchains' \
--ignore-filename-regex='/rustc' \
"--instr-profile=${coverage_dir}/raw/merge.profdata" \
$(printf -- "-object %s " $(cat "${coverage_dir}/raw/filenames.txt")) \
"--output-dir=${coverage_dir}/html_all"
cargo cov -- show --format=html \
--Xdemangler=rustfilt \
--ignore-filename-regex='/.cargo/registry' \
--ignore-filename-regex='/.rustup/toolchains' \
--ignore-filename-regex='/rustc' \
--ignore-filename-regex='tests/' \
"--instr-profile=${coverage_dir}/raw/merge.profdata" \
$(printf -- "-object %s " $(cat "${coverage_dir}/raw/filenames.txt")) \
"--output-dir=${coverage_dir}/html_without_tests"
cargo cov -- export --format=lcov \
--Xdemangler=rustfilt \
--ignore-filename-regex='/.cargo/registry' \
--ignore-filename-regex='/.rustup/toolchains' \
--ignore-filename-regex='/rustc' \
"--instr-profile=${coverage_dir}/raw/merge.profdata" \
$(printf -- "-object %s " $(cat "${coverage_dir}/raw/filenames.txt")) \
> "${coverage_dir}/export.lcov.txt"
cargo cov -- export --format=text \
--Xdemangler=rustfilt \
--ignore-filename-regex='/.cargo/registry' \
--ignore-filename-regex='/.rustup/toolchains' \
--ignore-filename-regex='/rustc' \
"--instr-profile=${coverage_dir}/raw/merge.profdata" \
$(printf -- "-object %s " $(cat "${coverage_dir}/raw/filenames.txt")) \
> "${coverage_dir}/export.json"
popd