lineguard 0.1.7

A fast and reliable file linter that ensures proper line endings and clean formatting
Documentation
name: Coverage

on:
  push:
    branches: [ master ]
    paths:
      - 'src/**'
      - 'Cargo.*'
      - '.github/workflows/coverage.yml'
  pull_request:
    branches: [ master ]
    paths:
      - 'src/**'
      - 'Cargo.*'
      - '.github/workflows/coverage.yml'
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always

jobs:
  coverage:
    name: Code Coverage
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v6

    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable

    - name: Cache cargo registry
      uses: actions/cache@v5
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
        key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
        restore-keys: |
          ${{ runner.os }}-cargo-registry-

    - name: Cache cargo build
      uses: actions/cache@v5
      with:
        path: target
        key: ${{ runner.os }}-cargo-build-coverage-${{ hashFiles('**/Cargo.lock') }}
        restore-keys: |
          ${{ runner.os }}-cargo-build-coverage-
          ${{ runner.os }}-cargo-build-

    - name: Cache cargo-tarpaulin
      id: cache-cargo-tarpaulin
      uses: actions/cache@v5
      with:
        path: ~/.cargo/bin/cargo-tarpaulin
        key: cargo-tarpaulin-${{ runner.os }}-v1

    - name: Install tarpaulin
      if: steps.cache-cargo-tarpaulin.outputs.cache-hit != 'true'
      run: cargo install cargo-tarpaulin

    - name: Generate coverage - Unit tests
      run: |
        cargo tarpaulin --lib --out xml --output-dir . --avoid-cfg-tarpaulin
        mv cobertura.xml cobertura-unit.xml

    - name: Upload unit test coverage to Codecov
      uses: codecov/codecov-action@v5
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        files: ./cobertura-unit.xml
        flags: unit-tests
        fail_ci_if_error: false

    - name: Generate coverage - All tests
      run: |
        cargo tarpaulin --all --out xml --output-dir . --avoid-cfg-tarpaulin
        mv cobertura.xml cobertura-all.xml

    - name: Upload full coverage to Codecov
      uses: codecov/codecov-action@v5
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        files: ./cobertura-all.xml
        flags: all-tests
        fail_ci_if_error: false