name: Lint and Test

on:
  pull_request:
  push:
    branches: [master]

permissions:
  contents: read

jobs:
  lint_and_test:
    name: Lint and Test - ${{ matrix.go-version }}
    strategy:
      matrix:
        go-version: [1.19.x, 1.20.x, 1.x]
        platform: [ubuntu-latest]
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Install Go
        uses: actions/setup-go@v4
        with:
          go-version: ${{ matrix.go-version }}

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

      - name: Lint package
        uses: golangci/golangci-lint-action@v3
        with:
          args: --exclude ".*, make it a constant (goconst)"
          version: latest

      - name: Test package
        run: |
          go test -v ./... -coverprofile=coverage.txt -covermode count
          go tool cover -func coverage.txt
