on:
  push:
  pull_request:
  schedule:
    - cron: "0 0 1,11,21 * *"
name: "Build and Test"
jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        go-version:
          - 1.24.x
          - 1.25.x
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Install Go
        uses: actions/setup-go@v3
        with:
          go-version: ${{ matrix.go-version }}
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Test
        run: go test ./...
      - name: Test coverage
        run: go test -coverprofile="cover.out" ./... # quotes needed for powershell
      - name: Send coverage
        uses: shogo82148/actions-goveralls@v1
        with:
          path-to-profile: cover.out
          flag-name: go${{ matrix.go-version }}-${{ matrix.os }}
          parallel: true
  # notifies that all test jobs are finished.
  finish:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: shogo82148/actions-goveralls@v1
        with:
          parallel-finished: true
