Skip to content

feat: exception events as values, and the crash stack without .ecxr #382

feat: exception events as values, and the crash stack without .ecxr

feat: exception events as values, and the crash stack without .ecxr #382

Workflow file for this run

name: Coverage
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
concurrency:
# A superseded push or PR update should cancel its predecessor. Without this every push to a
# PR left its predecessor running to completion — five pushes to one PR meant five concurrent
# coverage runs, which for Miri is five times ~28 minutes of runner doing work nobody will read.
#
# Manual dispatches are deliberately excluded. A dispatch shares `github.ref` with the
# branch's own run, so a shared group would have the two cancel each other, and a repeat
# dispatch would kill the run someone had just asked for. Keying dispatches by run id gives
# each one a group of its own: never cancelled, never cancelling.
group: coverage-${{ github.ref }}-${{ github.event_name == 'workflow_dispatch' && github.run_id || 'auto' }}
cancel-in-progress: true
permissions:
contents: read
jobs:
coverage:
runs-on: windows-latest
steps:
- uses: actions/checkout@v7
- uses: microsoft/setup-msbuild@v3
- name: Install Rust
run: rustup update stable && rustup default stable
- name: Install LLVM tools
run: rustup component add llvm-tools-preview
- name: Install grcov
run: cargo install grcov
- name: Run tests with coverage
shell: bash
run: |
RUSTFLAGS="-C instrument-coverage" \
LLVM_PROFILE_FILE="coverage-%p-%m.profraw" \
cargo test
- name: Generate coverage report
shell: bash
run: |
grcov . \
--binary-path ./target/debug/ \
-s . \
-t lcov \
--branch \
--ignore-not-existing \
--ignore "/*" \
-o lcov.info
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v7
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: false