name: Coverage on: workflow_dispatch: pull_request: branches: - main push: branches: - main jobs: coverage: name: Coverage (+nightly) # The large timeout is to accommodate nightly builds timeout-minutes: 60 runs-on: ubuntu-latest env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: full steps: - uses: actions/checkout@v2.4.0 with: persist-credentials: false - uses: actions-rs/toolchain@v1.0.7 with: toolchain: nightly override: true profile: minimal components: llvm-tools-preview - name: Install cargo-llvm-cov cargo command run: cargo install cargo-llvm-cov - name: Skip network tests on Ubuntu and Windows # Ubuntu runners don't have network or DNS configured during test steps. # Windows runners have an unreliable network. shell: bash if: matrix.os != 'macOS-latest' run: echo "ZEBRA_SKIP_NETWORK_TESTS=1" >> $GITHUB_ENV # Modified from: # https://github.com/zcash/librustzcash/blob/c48bb4def2e122289843ddb3cb2984c325c03ca0/.github/workflows/ci.yml#L20-L33 - name: Fetch path to Zcash parameters working-directory: ./zebra-consensus shell: bash # cargo-llvm-cov doesn't have a silent mode, so we have to extract the path from stderr run: echo "ZCASH_PARAMS=$(cargo llvm-cov --lcov --no-report run --example get-params-path 2>&1 >/dev/null | tail -1)" >> $GITHUB_ENV - name: Cache Zcash parameters id: cache-params uses: actions/cache@v2 with: path: ${{ env.ZCASH_PARAMS }} key: ${{ runner.os }}-params - name: Fetch Zcash parameters if: steps.cache-params.outputs.cache-hit != 'true' working-directory: ./zebra-consensus run: cargo llvm-cov --lcov --no-report run --example download-params - name: Show env vars run: | echo "ZEBRA_SKIP_NETWORK_TESTS=${{ env.ZEBRA_SKIP_NETWORK_TESTS }}" echo "ZCASH_PARAMS=${{ env.ZCASH_PARAMS }}" echo "CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}" echo "CARGO_TARGET_DIR=${{ env.CARGO_TARGET_DIR }}" echo "RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}" - name: Run Zebra tests run: cargo llvm-cov --lcov --no-report - name: Generate coverage report run: cargo llvm-cov --lcov --no-run --output-path lcov.info - name: Upload coverage report to Codecov uses: codecov/codecov-action@v2.1.0