name: codecov
on:
  push:
    branches: [main]
    paths:
      - '**.rs'
  pull_request:
    branches: [ main ]
    paths:
      - '**.rs'
jobs:
  # Run code coverage using cargo-llvm-cov then upload to codecov.io
  job_code_coverage:
    name: llvm-cov
    runs-on: self-hosted
    env:
      CARGO_TERM_COLOR: always
    steps:
      - uses: actions/checkout@v4
      # nightly is required for --doctests, see cargo-llvm-cov#2
      - name: Generate code coverage
        run: cargo +nightly llvm-cov --all-features --workspace --lcov --doctests --output-path lcov.info
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
        with:
          files: lcov.info
          fail_ci_if_error: true