name: Code Coverage
on:
  pull_request:
  push:
    branches: [ master ]
concurrency: 
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
jobs:
  tests:
    name: Code Coverage Tests
    runs-on: ubuntu-latest
    steps:
    - name: Check out repository
      uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
      with:
        fetch-depth: 0
    - name: Set up Go
      uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
      with:
        go-version-file: 'go.mod'
    - name: Run Tests
      run: make test-with-coverage
    - name: Upload Coverage
      uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
      with:
        files: coverage.txt
    - name: Upload Logs
      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
      with:
        name: logs
        path: .logs/**/*.log
        if-no-files-found: ignore
      if: ${{ always() }}