name: 'test' on: pull_request: paths: ['**.go', 'go.mod', '.github/workflows/*'] push: branches: ['main', 'aix'] jobs: linux: strategy: fail-fast: false matrix: os: ['ubuntu-20.04', 'ubuntu-latest', 'ubuntu-24.04-arm'] go: ['1.17', '1.24'] runs-on: '${{ matrix.os }}' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - uses: 'actions/setup-go@v5' with: {go-version: '${{ matrix.go }}'} - name: test run: | FSNOTIFY_BUFFER=4096 go test -parallel 1 -race ./... go test -parallel 1 -race ./... FSNOTIFY_DEBUG=1 go test -parallel 1 -race -v ./... windows: strategy: fail-fast: false matrix: os: ['windows-latest'] go: ['1.17', '1.24'] runs-on: '${{ matrix.os }}' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - uses: 'actions/setup-go@v5' with: {go-version: '${{ matrix.go }}'} - name: test run: | go test -parallel 1 -race ./... $Env:FSNOTIFY_BUFFER = 4096 go test -parallel 1 -race ./... $Env:FSNOTIFY_DEBUG = 1 go test -parallel 1 -race -v ./... # Test gccgo gcc: runs-on: 'ubuntu-24.04' name: 'test (ubuntu-24.04, gccgo 13.2)' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - name: test run: | sudo apt-get -y install gccgo-13 FSNOTIFY_BUFFER=4096 go-13 test -parallel 1 ./... go-13 test -parallel 1 ./... FSNOTIFY_DEBUG=1 go-13 test -parallel 1 -v ./... macos: name: 'test' strategy: fail-fast: false matrix: os: ['macos-13', 'macos-latest'] go: ['1.17', '1.24'] runs-on: '${{ matrix.os }}' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - uses: 'actions/setup-go@v5' with: {go-version: '${{ matrix.go }}'} - name: test run: | FSNOTIFY_BUFFER=4096 go test -parallel 1 -race ./... go test -parallel 1 -race ./... FSNOTIFY_DEBUG=1 go test -parallel 1 -race -v ./... # OpenBSD; no -race as the VM doesn't include the comp set. # # TODO: should probably add this, but on my local machine the tests time out # with -race as the waits aren't long enough (OpenBSD is kind of slow), # so should probably look into that first. Go 1.19 is supposed to have a # much faster race detector, so maybe waiting until we have that is # enough. openbsd: runs-on: 'ubuntu-latest' name: 'test (openbsd, 1.17)' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - name: 'test (openbsd, 1.17)' id: 'openbsd' uses: 'vmactions/openbsd-vm@v1' with: prepare: pkg_add go run: | useradd -mG wheel action FSNOTIFY_BUFFER=4096 su action -c 'go test -parallel 1 ./...' su action -c 'go test -parallel 1 ./...' FSNOTIFY_DEBUG=1 su action -c 'go test -parallel 1 -v ./...' # NetBSD netbsd: runs-on: 'ubuntu-latest' name: 'test (netbsd, 1.21)' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - name: 'test (netbsd, 1.21)' id: 'netbsd' uses: 'vmactions/netbsd-vm@v1' with: prepare: pkg_add go # TODO: no -race for the same reason as OpenBSD (the timing; it does run). run: | useradd -mG wheel action FSNOTIFY_BUFFER=4096 su action -c '/usr/pkg/bin/go??? test -parallel 1 ./...' su action -c '/usr/pkg/bin/go??? test -parallel 1 ./...' FSNOTIFY_DEBUG=1 su action -c '/usr/pkg/bin/go??? test -parallel 1 -v ./...' # DragonFlyBSD dragonflybsd: runs-on: 'ubuntu-latest' name: 'test (dragonflybsd, 1.20)' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - name: 'test (dragonflybsd, 1.20)' id: 'dragonflybsd' uses: 'vmactions/dragonflybsd-vm@v1' with: prepare: pkg install -y go # TODO: no -race for the same reason as OpenBSD (the timing; it does run). run: | pw user add -mG wheel -n action env FSNOTIFY_BUFFER=4096 su action -c 'go test -parallel 1 ./...' su action -c 'go test -parallel 1 ./...' env FSNOTIFY_DEBUG=1 su action -c 'go test -parallel 1 -v ./...' # illumos illumos: runs-on: 'ubuntu-latest' name: 'test (illumos, 1.22)' timeout-minutes: 10 steps: - uses: 'actions/checkout@v4' - name: 'test (illumos, 1.22)' id: 'illumos' uses: 'vmactions/omnios-vm@v1' with: prepare: pkg install go-122 run: | useradd action export GOCACHE=/tmp/go-cache export GOPATH=/tmp/go-path FSNOTIFY_BUFFER=4096 su action -c '/opt/ooce/go-1.22/bin/go test -parallel 1 ./...' su action -c '/opt/ooce/go-1.22/bin/go test -parallel 1 ./...' FSNOTIFY_DEBUG=1 su action -c '/opt/ooce/go-1.22/bin/go test -parallel 1 -v ./...' # Solaris # TODO: latest version is go 1.7(!) Need to find a good way to install a more # recent version; the go.dev doesn't have binaries for Solaris. # solaris: # runs-on: 'ubuntu-latest' # name: 'test (solaris, 1.17)' # timeout-minutes: 10 # steps: # - uses: 'actions/checkout@v4' # - name: 'test (solaris, 1.17)' # id: 'solaris' # uses: 'vmactions/solaris-vm@v1' # with: # prepare: pkg install pkg://solaris/developer/golang-17 # run: | # useradd action # export GOCACHE=/tmp/go-cache # export GOPATH=/tmp/go-path # FSNOTIFY_BUFFER=4096 su action -c 'go test -parallel 1 ./...' # su action -c 'go test -parallel 1 ./...' # FSNOTIFY_DEBUG=1 su action -c 'go test -parallel 1 -v ./...'