name: Unit Test

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: 1.23.2

    - name: Test
      run: go test ./...

  race-test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: 1.23.2

    - name: Test with race
      run: go test -race ./...

  golangci:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: 1.23.2

      - name: Go generate and check diff
        run: |
          go generate ./...
          git diff --exit-code

      - name: Lint
        uses: golangci/golangci-lint-action@v3
        with:
          version: v1.61.0
          skip-pkg-cache: true