name: tests

on:
  push:
    branches: [master]
  pull_request:

permissions:
  contents: read

jobs:
  test:
    strategy:
      matrix:
        go: [stable, oldstable]
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Setup
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go }}
        cache: true

    - name: Prepare checkout
      run: git config --global core.autocrlf false

    - name: Checkout
      uses: actions/checkout@v4

    - name: Test
      run: go test -v -coverprofile coverage.txt -covermode atomic ./...

    - name: Coverage
      uses: codecov/codecov-action@v4
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
