jobs:
- build:
+ test:
timeout-minutes: 30
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
strategy:
matrix:
- go-version: [ 'tip' ]
+ go-version: [ '1.19', '1.20' ]
+ os: [windows-latest, macos-latest, ubuntu-latest]
fail-fast: false
steps:
- uses: actions/checkout@v2
+ - uses: ./.github/actions/go-common
+ - run: go test -race -count 2 ./...
- - name: Set up Go
- if: matrix.go-version != 'tip'
- uses: actions/setup-go@v2
- with:
- go-version: ${{ matrix.go-version }}
-
- - name: Install gotip
- if: matrix.go-version == 'tip'
- run: |
- git clone --depth=1 https://go.googlesource.com/go "$HOME/gotip"
- cd "$HOME/gotip/src"
- ./make.bash
- echo "GOROOT=$HOME/gotip" >> "$GITHUB_ENV"
- echo "$HOME/gotip/bin:$PATH" >> "$GITHUB_PATH"
-
- - name: Test
- run: go test -race -count 2 ./...
-
- - name: Test Benchmarks
- run: go test -race -run @ -bench . -benchtime 2x ./...
+ test-benchmarks:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ go-version: [ '1.20' ]
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ./.github/actions/go-common
+ - run: go test -race -run @ -bench . -benchtime 2x ./...
- - name: Bench
- run: go test -run @ -bench . ./...
+ bench:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ go-version: [ '1.20' ]
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ./.github/actions/go-common
+ - run: go test -run @ -bench . ./...
- - name: Test on 386
- run: GOARCH=386 go test ./... -bench .
- continue-on-error: true
+ test-386:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ go-version: [ '1.20' ]
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ./.github/actions/go-common
+ - run: GOARCH=386 go test ./...
+ - run: GOARCH=386 go test ./... -run @ -bench .
+ build-wasm:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ go-version: [ '1.20' ]
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ./.github/actions/go-common
- name: Some packages compile for WebAssembly
run: GOOS=js GOARCH=wasm go build . ./storage ./tracker/...
+ torrentfs-linux:
+ timeout-minutes: 5
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ go-version: [ '1.20' ]
+ os: [ubuntu-latest]
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ./.github/actions/go-common
+
- name: Install godo
- run: go install github.com/anacrolix/godo@latest
+ run: |
+ # Need master for cross-compiling fix
+ go install -v -x github.com/anacrolix/godo@master
+ echo $PATH
- name: Apt packages
run: sudo apt install pv fuse
- name: torrentfs end-to-end test
- run: fs/test.sh
- timeout-minutes: 10
+ # Test on 386 for atomic alignment and other bad 64-bit assumptions
+ run: GOARCH=386 fs/test.sh
+
+# Github broke FUSE on MacOS, I'm not sure what the state is.
+
+# torrentfs-macos:
+# timeout-minutes: 15
+# runs-on: ${{ matrix.os }}
+# strategy:
+# matrix:
+# go-version: [ '1.20' ]
+# os: [macos-latest]
+# fail-fast: false
+# steps:
+# - uses: actions/checkout@v2
+# - uses: ./.github/actions/go-common
+#
+# - run: brew install macfuse pv md5sha1sum bash
+#
+# - name: Install godo
+# run: go install -v github.com/anacrolix/godo@master
+#
+# - name: torrentfs end-to-end test
+# run: fs/test.sh
+# # Pretty sure macos on GitHub CI has issues with the fuse driver now.
+# continue-on-error: true