name: Go

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

jobs:
  build:
    strategy:
      matrix:
        go-version: [1.22.x, 1.23.x, 1.24.x]
        os: [ubuntu-latest, macos-latest, windows-latest]  
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: ${{ matrix.go-version }}

    - name: Vet
      run: go vet ./...

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

    - name: Test Noasm
      run: go test -tags=noasm ./...
      
  build-special:
    env:
      CGO_ENABLED: 0
    runs-on: ubuntu-latest
    steps:
    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: stable

    - name: Checkout code
      uses: actions/checkout@v4

    - name: fmt
      run: diff <(gofmt -d .) <(printf "")

    - name: Test 386
      run: GOOS=linux GOARCH=386 go test -short ./...

    - name: goreleaser deprecation
      run: curl -sfL https://git.io/goreleaser | VERSION=v2.3.2 sh -s -- check
      
    - name: goreleaser snapshot
      run: curl -sL https://git.io/goreleaser | VERSION=v2.3.2 sh -s -- --snapshot --clean
