name: Coverage

on: [pull_request, push]

jobs:
    coverage:
        runs-on: ubuntu-latest
        env:
            CARGO_TERM_COLOR: always
        steps:
            - uses: actions/checkout@v5
            - name: Install Rust
              run: rustup update stable
            - name: Install cargo-llvm-cov
              uses: taiki-e/install-action@cargo-llvm-cov
            - name: Install nextest
              uses: taiki-e/install-action@nextest
            - name: Generate code coverage
              run: cargo llvm-cov --workspace --codecov --output-path codecov.json
            - name: Upload coverage to Codecov
              uses: codecov/codecov-action@v5
              with:
                  token: ${{ secrets.CODECOV_TOKEN }}
                  slug: symbolica-dev/numerica
                  files: codecov.json
                  fail_ci_if_error: true
