From e1cf8f69e67e22425d2d5be18382da32c50a4329 Mon Sep 17 00:00:00 2001 From: Dominik Nakamura Date: Sun, 21 Mar 2021 14:32:19 +0900 Subject: [PATCH] Use grcov for better code coverage testing --- .gitignore | 2 +- Justfile | 25 +++++++++++++------------ Vagrantfile | 17 ----------------- tests/common/mod.rs | 4 ---- 4 files changed, 14 insertions(+), 34 deletions(-) delete mode 100644 Vagrantfile diff --git a/.gitignore b/.gitignore index 37ad5f9..a43b964 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ /.vagrant /target +*.profraw .env Cargo.lock lcov.info -tarpaulin-report.html diff --git a/Justfile b/Justfile index b3e43a8..e80ebd1 100644 --- a/Justfile +++ b/Justfile @@ -1,21 +1,22 @@ -export OBS_HOST := if os() == "macos" { "host.docker.internal" } else { "127.0.0.1" } - # list available recipes default: - @just --list + @just --list --unsorted -# run integration tests with coverage (using Docker) +# run integration tests with coverage coverage: - docker run --rm -it --security-opt seccomp=unconfined --network host -v $PWD:/volume -v $HOME/.cargo/registry:/usr/local/cargo/registry xd009642/tarpaulin cargo tarpaulin --out Html --out Lcov --all-features + cargo install grcov + rustup component add --toolchain nightly llvm-tools-preview -# run integration tests with coverage (using Vagrant) -coverage-vagrant: - vagrant up - vagrant ssh -c 'cd /vagrant; false; while [ "$?" -eq 1 ]; do cargo tarpaulin --all-features --no-run; done' - vagrant ssh -c 'cd /vagrant && cargo tarpaulin --out Html --out Lcov --all-features' + rm -f *.profraw ./target/debug/coverage lcov.info + + RUSTFLAGS="-Zinstrument-coverage" LLVM_PROFILE_FILE="coverage-%p-%m.profraw" cargo +nightly test --all-features + rustup run nightly grcov . -s . --binary-path ./target/debug/ -t html --branch --ignore-not-existing -o ./target/debug/coverage + rustup run nightly grcov . -s . --binary-path ./target/debug/ -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info + + rm -f *.profraw # upload coverage to https://codecov.io upload-coverage: @# {{env_var("CODECOV_TOKEN")}} - just coverage-vagrant - bash -c "bash <(curl -s https://codecov.io/bash)" + just coverage + bash -c "bash <(curl -s https://codecov.io/bash) -f lcov.info" diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index a42d04c..0000000 --- a/Vagrantfile +++ /dev/null @@ -1,17 +0,0 @@ -Vagrant.configure("2") do |config| - config.vm.box = "ubuntu/focal64" - - config.vm.network "private_network", ip: "192.168.10.20" - - config.vm.provision "shell", inline: <<-SHELL - apt-get update - apt-get dist-upgrade -y - apt-get install -y build-essential libssl-dev pkg-config - SHELL - - config.vm.provision "shell", privileged: false, inline: <<-SHELL - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - source $HOME/.cargo/env - cargo install cargo-tarpaulin --version 0.18.0-alpha1 - SHELL -end diff --git a/tests/common/mod.rs b/tests/common/mod.rs index d1f671c..8791768 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -48,10 +48,6 @@ static INIT: Once = Once::new(); pub async fn new_client() -> Result { INIT.call_once(|| { - if matches!(env::var("USER").as_deref(), Ok("vagrant")) { - env::set_var("OBS_HOST", "192.168.10.1"); - } - dotenv::dotenv().ok(); pretty_env_logger::init(); });