name: Run tests
on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
env:
  GO111MODULE: on
jobs:
  test:
    strategy:
      matrix:
        go-version: [1.11.x, 1.16.x]
        os: [ubuntu-latest]
    runs-on: ${{ matrix.os }}
    steps:

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

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

    # Needed for versions <1.14 tests
    - name: Install mock
      run: |
        GO111MODULE=off go get github.com/golang/mock | true

    - name: Vet and build
      run: |
        go vet ./...
        go build ./...

    - name: Install tools
      run: |
        go install github.com/golang/mock/mockgen
        GO111MODULE=off go get -u golang.org/x/lint/golint

    - name: Run test scripts
      run: |
        ./ci/check_go_fmt.sh
        ./ci/check_go_lint.sh
        ./ci/check_go_generate.sh
        ./ci/check_go_mod.sh
        ./ci/check_panic_handling.sh

    - name: Run Go tests
      run: |
        for i in $(find $PWD -name go.mod); do
          pushd $(dirname $i)
          go test ./...
          popd
        done 
