name: Tests

on:
  push:
  pull_request:

jobs:

  build:
    strategy:
      matrix:
        go-version:
          - "1.16"
          - "1.17"
          - "1.18"
          - "1.19"
          - "1.20"
        platform: [ubuntu-latest]

    runs-on: ${{ matrix.platform }}
    steps:

    - name: Setup env
      run: |
        echo "GOPATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV
        echo "CURRENT_WORKSPACE=$GITHUB_WORKSPACE/src/github.com/${{ github.repository }}" >> $GITHUB_ENV
        echo "$GITHUB_WORKSPACE/bin" >> $GITHUB_PATH

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

    - name: Check out code into the Go module directory
      uses: actions/checkout@v3
      with:
        path: ${{ env.CURRENT_WORKSPACE }}

    - name: Get dependencies
      run: go get -v ./...
      working-directory: ${{ env.CURRENT_WORKSPACE }}

    - name: Run go vet
      run: go vet ./...
      working-directory: ${{ env.CURRENT_WORKSPACE }}

    - name: Run tests
      run: ./test.sh
      working-directory: ${{ env.CURRENT_WORKSPACE }}

    - uses: codecov/codecov-action@v3
      with:
        files: ${{ env.CURRENT_WORKSPACE }}/coverage.txt
        verbose: true
