name: tests
on:
  push:
    branches:
      - develop
  pull_request:
  workflow_dispatch:
jobs:
  unit:
    concurrency:
      group: unit-${{ github.ref }}-${{ matrix.os }}-${{ matrix.go-version }}
      cancel-in-progress: true
    strategy:
      matrix:
        go-version: [1.22.x, 1.25.x]
        os: [ubuntu, windows, macOS]
    env:
      OS: ${{ matrix.os }}-latest
      GO: ${{ matrix.go-version }}
    runs-on: ${{ matrix.os }}-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Install Go
        uses: actions/setup-go@v3
        with:
          go-version: ${{ matrix.go-version }}
          cache: true
      - name: Test
        run: go test -coverpkg=./internal/... -race -vet=off -count=1 -coverprofile unit.txt -covermode atomic ./...
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          file: ./unit.txt
          flags: unit,${{ matrix.os }},go-${{ matrix.go-version }}
          name: unit
          token: ${{ secrets.CODECOV_TOKEN }}
