name: Coverage on: push: branches: [ master ] jobs: # cargo test normally grcov: name: Gather coverage data with grcov runs-on: ubuntu-latest steps: - name: Checkout branch uses: actions/checkout@master with: submodules: true - name: Setup Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal # toolchain: nightly toolchain: nightly-2020-03-12 # latest nightly makes `quote` crash with -Zno-landing-pads override: true - name: Ensure workspace is clean uses: actions-rs/cargo@v1 with: command: clean - name: Run tests with -Zprofile uses: actions-rs/cargo@v1 with: command: test env: CI_GRCOV: '1' # Tell the test harness to increase stack size CARGO_INCREMENTAL: '0' RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Zno-landing-pads' - name: Run grcov id: grcov uses: actions-rs/grcov@v0.1 - name: Upload coverage data to codecov.io uses: codecov/codecov-action@v1 with: token: ${{secrets.CODECOV_TOKEN}} file: ${{steps.grcov.outputs.report}} # Collect each feature independently to help identify missing tests grcov-split: name: Gather coverage data with grcov runs-on: ubuntu-latest strategy: matrix: feature: - parser - printer - binary - import - beta_normalize - alpha_normalize - type_inference steps: - name: Checkout branch uses: actions/checkout@master with: submodules: true - name: Setup Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal # toolchain: nightly toolchain: nightly-2020-03-12 # latest nightly makes `quote` crash with -Zno-landing-pads override: true - name: Ensure workspace is clean uses: actions-rs/cargo@v1 with: command: clean - name: Run tests with -Zprofile uses: actions-rs/cargo@v1 with: command: test args: tests::spec::${{matrix.feature}} env: CI_GRCOV: '1' # Tell the test harness to increase stack size CARGO_INCREMENTAL: '0' RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Zno-landing-pads' - name: Run grcov id: grcov uses: actions-rs/grcov@v0.1 - name: Upload coverage data to codecov.io uses: codecov/codecov-action@v1 with: token: ${{secrets.CODECOV_TOKEN}} file: ${{steps.grcov.outputs.report}} flags: ${{matrix.feature}}