cw-it 0.3.1

A crate of utils for integration testing CosmWasm smart contracts
# https://crates.io/crates/grcov

[env]
COVERAGE_TARGET_DIRECTORY = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target/coverage"
COVERAGE_BINARIES = "${COVERAGE_TARGET_DIRECTORY}/debug/deps"
COVERAGE_PROF_OUTPUT = "${COVERAGE_TARGET_DIRECTORY}/profraw"

[tasks.coverage-grcov-prepare-outdir]
private = true
script='''
#!/usr/bin/env bash
set -eux

rm -rf ${COVERAGE_PROF_OUTPUT}
mkdir -p ${COVERAGE_PROF_OUTPUT}
'''

[tasks.coverage-grcov-run-test]
condition = { rust_version = { min = "1.60.0" } }
private = true
run_task = "test"

[tasks.coverage-grcov-run-test.env]
CARGO_BUILD_TARGET_DIR = "${COVERAGE_TARGET_DIRECTORY}"
RUSTFLAGS = "-Cinstrument-coverage"
LLVM_PROFILE_FILE = "${COVERAGE_PROF_OUTPUT}/coverage-%p-%m.profraw"

[tasks.install-grcov]
condition = { env_not_set = ["SKIP_INSTALL_GRCOV"] }
private = true
command = "cargo"
args = ["install", "grcov", "--locked"]

[tasks.coverage-grcov]
condition = { rust_version = { min = "1.60.0" } }
private = true
script = '''
#!/usr/bin/env bash
set -eux

grcov ${COVERAGE_PROF_OUTPUT} \
  -b ${COVERAGE_BINARIES} -s ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY} \
  -t ${GRCOV_OUTPUT_TYPE} --llvm --branch --ignore-not-existing --ignore "/*" --ignore "*/tests/*" --ignore "*/testing/*" --ignore "target/*" -o ${GRCOV_OUTPUT_PATH}
'''
dependencies = ["install-grcov", "coverage-grcov-prepare-outdir", "coverage-grcov-run-test"]

[tasks.coverage-grcov-html]
env = { GRCOV_OUTPUT_TYPE = "html", GRCOV_OUTPUT_PATH = "${COVERAGE_TARGET_DIRECTORY}/html", TEST_RUNNER = "multi-test" }
run_task = "coverage-grcov"

[tasks.coverage-grcov-lcov]
env = { GRCOV_OUTPUT_TYPE = "lcov", GRCOV_OUTPUT_PATH = "${COVERAGE_TARGET_DIRECTORY}/lcov.info", TEST_RUNNER = "multi-test" }
run_task = "coverage-grcov"