name: test on: push: branches: - main pull_request: jobs: test: strategy: matrix: go-version: [ 1.16.x, 1.17.x ] runs-on: ubuntu-latest steps: - name: Install Go uses: actions/setup-go@v2 with: go-version: ${{ matrix.go-version }} - name: Checkout code uses: actions/checkout@v2 - name: Go cache uses: actions/cache@v2 with: path: | ~/go/pkg/mod ~/.cache/go-build key: ${{ runner.os }}-go-cache-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-cache - name: Run gofmt run: gofmt -d -e . 2>&1 | tee outfile && test -z "$(cat outfile)" && rm outfile - name: Run golint run: | go install golang.org/x/lint/golint@latest golint -set_exit_status ./... cd _examples && golint -set_exit_status ./... && cd .. - name: Run go vet run: | go vet ./... cd _examples && go vet ./... && cd .. - name: Run go test run: | go test -v -race -coverprofile=coverage.txt -covermode=atomic ./... cd _examples && go test -v -race ./... && cd .. - name: Run godog run: | go install ./cmd/godog godog -f progress --strict - name: Report on code coverage if: matrix.go-version == '1.17.x' uses: codecov/codecov-action@v1 with: file: ./coverage.txt