name: pull-request

on:
- pull_request
- merge_group

jobs:
  unit-test:
    strategy:
      matrix:
        go-version: [1.17.x, 1.18.x]
        platform: [ubuntu-latest]
    runs-on: ${{ matrix.platform }}
    steps:
    # Checkout should always be before setup-go to ensure caching is working
    - name: checkout
      uses: actions/checkout@v4
      with:
        fetch-depth: 1
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}
    - name: Run unit tests
      run: go test -v ./...

  build-arch-test:
    strategy:
      matrix:
        go-version: [1.17.x, 1.18.x]
        platform: [ubuntu-latest]
        arch: [386, amd64, arm, arm64]
    runs-on: ${{ matrix.platform }}
    steps:
    # Checkout should always be before setup-go to ensure caching is working
    - name: checkout
      uses: actions/checkout@v4
      with:
        fetch-depth: 1
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}
    - name: Test to build binary
      run: GOARCH=${{ matrix.arch }} go build ./...

  build-platform-test:
    strategy:
      matrix:
        go-version: [1.17.x, 1.18.x]
        platform: [windows-latest, macos-latest]
    runs-on: ${{ matrix.platform }}
    steps:
    # Checkout should always be before setup-go to ensure caching is working
    - name: checkout
      uses: actions/checkout@v4
      with:
        fetch-depth: 1
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}
    - name: Test to build binary
      run: go build ./...
