#
# This GitHub action runs Packer go tests across
# Windows, Linux, and MacOS runners.
#

name: "Go Test"

on:
  push:
    branches:
      - 'main'
      - release/**
  pull_request:

env:
  PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}

permissions:
  contents: read

jobs:
  get-go-version:
    runs-on: ubuntu-latest
    outputs:
      go-version: ${{ steps.get-go-version.outputs.go-version }}
    steps:
      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      - name: 'Determine Go version'
        id: get-go-version
        run: |
          echo "Found Go $(cat .go-version)"
          echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT
  linux-go-tests:
    needs:
      - get-go-version
    runs-on: ubuntu-latest
    name: Linux go tests
    steps:
      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
        with:
          go-version: ${{ needs.get-go-version.outputs.go-version }}
      - run: TESTARGS="-coverprofile=coverage.txt  -covermode=atomic" make ci
  darwin-go-tests:
    needs:
      - get-go-version
    runs-on: macos-latest
    name: Darwin go tests
    steps:
      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
        with:
          go-version: ${{ needs.get-go-version.outputs.go-version }}
      - run: go test ./... -coverprofile=coverage.txt  -covermode=atomic
  windows-go-tests:
    needs:
      - get-go-version
    runs-on: windows-latest
    name: Windows go tests
    steps:
      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
        with:
          go-version: ${{ needs.get-go-version.outputs.go-version }}
      - run: go test ./... -coverprofile=coverage.txt  -covermode=atomic
