| --- |
| name: Test |
| |
| "on": |
| push: |
| branches: |
| - master |
| pull_request: |
| branches: |
| - master |
| |
| jobs: |
| test: |
| name: "Test go ${{ matrix.go_version }} on ${{ matrix.platform }}" |
| runs-on: ${{ matrix.platform }} |
| |
| strategy: |
| matrix: |
| platform: |
| - ubuntu-latest |
| - macos-latest |
| go_version: |
| # Test the two currently supported releases. |
| # (https://go.dev/doc/devel/release#policy). |
| - stable |
| - oldstable |
| include: |
| # Also sanity test a very old release on linux. |
| - platform: ubuntu-latest |
| go_version: 1.6.x |
| |
| steps: |
| # 1.6 doesn't seem to default GOPATH to anything, |
| # so we set it explicitly here. |
| - if: ${{ matrix.go_version == '1.6.x' }} |
| name: Set GOPATH |
| run: echo "GOPATH=$HOME/go" >> $GITHUB_ENV |
| |
| - name: Set up Go ${{ matrix.go_version }} |
| uses: actions/setup-go@v4 |
| with: |
| go-version: ${{ matrix.go_version }} |
| check-latest: true |
| |
| - name: Checkout repo |
| uses: actions/checkout@v4 |
| |
| - name: Build |
| run: go build -v |
| |
| # Skip tests for 1.6 as we use modern Go. |
| # If the main lib builds and tests pass on other versions, we are good. |
| - if: ${{ matrix.go_version != '1.6.x' }} |
| name: Single Test |
| run: go test -v |
| |
| # Run the tests again 100 times without verbose. |
| - if: ${{ matrix.go_version != '1.6.x' }} |
| name: Many Tests |
| run: go test -count=100 -timeout=10s |