diff --git a/.gitignore b/.gitignore index 026d278..37ad5f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.vagrant /target .env diff --git a/Justfile b/Justfile index 293d62d..b3e43a8 100644 --- a/Justfile +++ b/Justfile @@ -4,12 +4,18 @@ export OBS_HOST := if os() == "macos" { "host.docker.internal" } else { "127.0.0 default: @just --list -# run integration tests with coverage +# run integration tests with coverage (using Docker) 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 +# 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' + # upload coverage to https://codecov.io upload-coverage: @# {{env_var("CODECOV_TOKEN")}} - just coverage + just coverage-vagrant bash -c "bash <(curl -s https://codecov.io/bash)" diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..a42d04c --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,17 @@ +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 8791768..d1f671c 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -48,6 +48,10 @@ 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(); });