name: Test
on: [push, pull_request]
jobs:
  # Test with a specific version of Go since some tests rely on behavior that
  # may drift with versions (e.g., inlining behavior, gofmt behavior, etc.).
  test-latest:
    runs-on: ubuntu-latest
    steps:
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: 1.26.x
    - name: Checkout code
      uses: actions/checkout@v4
    - name: Test
      run: go test ./...
    - name: Test386
      run: go test ./...
      env: {GOARCH: "386"}
    - name: BuildJSONv2
      run: go build -tags=goexperiment.jsonv2 ./...
    - name: TestInline
      run: go test -v -run=TestInline
      env: {TEST_INLINE: true}
    - name: Format
      run: diff -u <(echo -n) <(gofmt -s -d .)
  # Test on a large matrix of Go versions and operating systems.
  test-all:
    strategy:
      matrix:
        go-version: [1.26.x]
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}
    - name: Checkout code
      uses: actions/checkout@v4
    - name: Test
      run: go test ./...
