diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..a69dd51 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,52 @@ +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