name: Go Tests

on:
  push:
    branches:
      - main
      - 'feat-**'
  pull_request:
    branches:
      - main
      - 'feat-**'

env:
  EACHMODULE_CONCURRENCY: 2

jobs:
  unix-tests:
    name: Unix SDK tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        go-version: [1.19, "1.20"]
    steps:
    - uses: actions/checkout@v2

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

    - name: Install golint
      run: go install golang.org/x/lint/golint@latest

    - name: Test
      run: make ci-test-no-generate

  deprecated-unix-tests:
    needs: unix-tests
    name: Deprecated Go version Unix SDK Tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        go-version: [1.15, 1.16, 1.17, 1.18]
        exclude:
          - os: macos-latest
            go-version: 1.15
          - os: macos-latest
            go-version: 1.16
    steps:
    - uses: actions/checkout@v2

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

    - name: Test
      run: make ci-test-no-generate

  windows-tests:
    name: Windows SDK Tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest]
        go-version: [1.19, "1.20"]
    env:
      EACHMODULE_SKIP: "internal\\repotools\\changes"
    steps:
    - uses: actions/checkout@v2

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

    - name: Test
      run: make vet build unit-test

  deprecated-windows-tests:
    needs: windows-tests
    name: Deprecated Go version Windows SDK Tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest]
        go-version: [1.15, 1.16, 1.17, 1.18]
    env:
      EACHMODULE_SKIP: "internal\\repotools\\changes"
    steps:
    - uses: actions/checkout@v2

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

    - name: Test
      run: make vet build unit-test
