# Continuous integration handling for Go
name: ci-go

on:
  pull_request:
    paths:
      - .github/workflows/ci-go.yml
      - .golangci.yml
      - .go-version
      - go.mod
      - '**.go'

permissions:
  contents: read

jobs:
  golangci-lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
      - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
        with:
          go-version-file: 'go.mod'
      - run: go mod download
      - uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1
  terraform-provider-corner:
    defaults:
      run:
        working-directory: terraform-provider-corner
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
      - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
        with:
          path: terraform-provider-corner
          repository: hashicorp/terraform-provider-corner
      - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
        with:
          go-version-file: 'go.mod'
      - run: go mod edit -replace=github.com/hashicorp/terraform-plugin-mux=../
      - run: go mod tidy
      - run: go test -v ./...
        env:
          TF_ACC: '1'
  test:
    name: test (Go v${{ matrix.go-version }})
    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [ '1.23', '1.22' ]
    steps:
      - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
      - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
        with:
          go-version: ${{ matrix.go-version }}
      - run: go mod download
      - run: go test -coverprofile=coverage.out ./...
      - run: go tool cover -html=coverage.out -o coverage.html
      - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: go-${{ matrix.go-version }}-coverage
          path: coverage.html
