concurrency: group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: push: branches: - master pull_request: branches: - master name: tests env: GO111MODULE: on permissions: contents: read jobs: test: permissions: contents: read id-token: write defaults: run: shell: bash strategy: matrix: go-version: [1.x, 1.23.0] # test with N and the .0 release of N-1 platform: [ubuntu-latest] include: # include windows, but only with the latest Go version, since there # is very little in the library that is platform specific - go-version: 1.x platform: windows-latest # only update test coverage stats with the most recent go version on linux - go-version: 1.x platform: ubuntu-latest update-coverage: true runs-on: ${{ matrix.platform }} steps: - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: go-version: ${{ matrix.go-version }} - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Get values for cache paths to be used in later steps - id: cache-paths run: | echo "go-cache=$(go env GOCACHE)" >> $GITHUB_OUTPUT echo "go-mod-cache=$(go env GOMODCACHE)" >> $GITHUB_OUTPUT - name: Cache go modules uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ${{ steps.cache-paths.outputs.go-cache }} ${{ steps.cache-paths.outputs.go-mod-cache }} key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: ${{ runner.os }}-go- - name: Run go test run: | if [ -n "${{ matrix.update-coverage }}" ]; then script/test.sh -race -covermode atomic -coverprofile coverage.txt ./... exit fi script/test.sh -race -covermode atomic ./... - name: Ensure integration tests build # don't actually run tests since they hit live GitHub API run: go test -v -tags=integration -run=^$ ./test/integration - name: Upload coverage to Codecov if: ${{ matrix.update-coverage }} uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 with: use_oidc: true