name: test on: push: branches: - main pull_request: jobs: test: strategy: matrix: go-version: [ 1.16.x, 1.17.x, 1.19.x, 1.20.x, 1.21.x ] # Lowest supported and current stable versions. runs-on: ubuntu-latest steps: - name: Install Go uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - name: Checkout code uses: actions/checkout@v4 - name: Go cache uses: actions/cache@v3 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 staticcheck if: matrix.go-version == '1.20.x' uses: dominikh/staticcheck-action@v1.3.1 with: version: "2023.1.3" install-go: false cache-key: ${{ matrix.go }} - 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@v4 with: file: ./coverage.txt