diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 6d92f3a7b..2941794f9 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -256,9 +256,10 @@ jobs: id: toolchain uses: actions-rs/toolchain@v1 with: - toolchain: stable + toolchain: nightly target: x86_64-unknown-linux-musl override: true + components: llvm-tools-preview - name: Setup Cargo cache uses: actions/cache@v2.1.6 @@ -279,14 +280,34 @@ jobs: ${{ runner.os }}-cargo-coverage-${{ steps.toolchain.outputs.rustc_hash }}- ${{ runner.os }}-cargo-coverage- - - name: Run cargo tarpaulin - uses: actions-rs/tarpaulin@v0.1 + - name: Download grcov + run: | + mkdir -p "${HOME}/.local/bin" + curl -sL https://github.com/mozilla/grcov/releases/latest/download/grcov-linux-x86_64.tar.bz2 | tar -jxf - -C "${HOME}/.local/bin" + echo "$HOME/.local/bin" >> $GITHUB_PATH + + + - name: Run test suite with profiling enabled + uses: actions-rs/cargo@v1 with: - version: '0.18.2' - args: '--avoid-cfg-tarpaulin' + command: test + args: --all-features --no-fail-fast + env: + CARGO_INCREMENTAL: '0' + RUSTFLAGS: '-Zinstrument-coverage' + RUSTDOCFLAGS: "-Cpanic=abort -Zinstrument-coverage -Zunstable-options --persist-doctests ${{ github.workspace }}/target/debug/doctestbins" + LLVM_PROFILE_FILE: "cargo-test-%p-%m.profraw" + + - name: Build grcov report + run: | + mkdir -p target/coverage + grcov . --binary-path ./target/debug/deps/ -s . -t lcov --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/tests.lcov + grcov . --binary-path ./target/debug/doctestbins/ -s . -t lcov --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/doctests.lcov - name: Upload to codecov.io uses: codecov/codecov-action@v2 + with: + files: target/coverage/*.lcov build-image: