diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6d8ceba..cf87756 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,16 +11,52 @@ env: jobs: test: + env: + PROJECT_NAME_UNDERSCORE: blockhain_cli + CARGO_INCREMENTAL: 0 + RUSTFLAGS: -Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort + RUSTDOCFLAGS: -Cpanic=abort runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Build - run: cargo build --verbose + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + - name: Cache dependencies + uses: actions/cache@v2 + env: + cache-name: cache-dependencies + with: + path: | + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + ~/.cargo/bin + ~/.cargo/registry/index + ~/.cargo/registry/cache + target + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Cargo.lock') }} - name: Run clippy run: cargo clippy --all-targets --all-features -- -D warnings - name: Run lint run: cargo fmt -- --check - - name: Run tests - run: cargo test --verbose + - name: Run tests with the coverage report + run: | + cargo install cargo2junit grcov; + cargo test $CARGO_OPTIONS -- -Z unstable-options --format json | cargo2junit > results.xml; + zip -0 ccov.zip `find . \( -name "$PROJECT_NAME_UNDERSCORE*.gc*" \) -print`; + grcov ccov.zip -s . -t lcov --llvm --ignore-not-existing --ignore "/*" --ignore "tests/*" -o lcov.info; + - name: Upload test results + uses: EnricoMi/publish-unit-test-result-action@v1 + with: + check_name: Test Results + github_token: ${{ secrets.GITHUB_TOKEN }} + files: results.xml + - name: Upload to CodeCov + uses: codecov/codecov-action@v1 + with: + files: ./lcov.info + fail_ci_if_error: true diff --git a/Cargo.toml b/Cargo.toml index feef314..48979a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,9 @@ path = "src/lib.rs" name = "blockchain-prompts" path = "src/bin/blockchain.rs" +[features] +coverage = [] + [dependencies] chrono = "0.4.31" cliclack = "0.1.9"