on:
  push:
    branches:
      - master
      - main
  pull_request:
name: Test
jobs:
  test:
    name: Run tests
    strategy:
      matrix:
        go-version: [1.22.x, 1.21.x, 1.20.x, 1.19.x, 1.18.x]
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}

    - name: Test
      run: make test
  codecov:
    name: Coverage report
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version-file: go.mod

    - name: Test
      run: make coverage

    - uses: codecov/codecov-action@v4
      with:
        files: coverage.out
        fail_ci_if_error: true
        verbose: true
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}