...
1name: Go
2
3on:
4 push:
5 branches: [ master ]
6 pull_request:
7 branches: [ master ]
8
9permissions: read-all
10
11jobs:
12 build:
13 strategy:
14 matrix:
15 go-version: [1.20.x, 1.21.x, 1.22.x]
16 os: [ubuntu-latest, macos-latest, windows-latest]
17 env:
18 CGO_ENABLED: 0
19 runs-on: ${{ matrix.os }}
20 steps:
21 - name: Set up Go
22 uses: actions/setup-go@v5
23 with:
24 go-version: ${{ matrix.go-version }}
25
26 - name: Checkout code
27 uses: actions/checkout@v4
28
29 - name: Vet
30 run: go vet ./...
31
32 - name: Test
33 run: go test ./...
34
35 - name: Test Noasm
36 run: go test -tags=noasm ./...
37
38 - name: Test Race 1 CPU
39 env:
40 CGO_ENABLED: 1
41 run: go test -cpu=1 -short -race -v ./...
42
43 - name: Test Race 4 CPU
44 env:
45 CGO_ENABLED: 1
46 run: go test -cpu=4 -short -race -v ./...
47
48 generate:
49 strategy:
50 matrix:
51 pkg: [s2, zstd, huff0]
52 runs-on: ubuntu-latest
53 steps:
54 - name: Set up Go
55 uses: actions/setup-go@v5
56 with:
57 go-version: 1.21.x
58
59 - name: Checkout code
60 uses: actions/checkout@v4
61
62 - name: Generate
63 working-directory: ${{ matrix.pkg }}/_generate
64 run: go generate -v -x
65
66 - name: Git Status
67 run: |
68 git diff
69 test -z "$(git status --porcelain)"
70
71 build-special:
72 env:
73 CGO_ENABLED: 0
74 runs-on: ubuntu-latest
75 steps:
76 - name: Set up Go
77 uses: actions/setup-go@v5
78 with:
79 go-version: 1.22.x
80
81 - name: Checkout code
82 uses: actions/checkout@v4
83
84 - name: fmt
85 run: diff <(gofmt -d .) <(printf "")
86
87 - name: Test 386
88 run: GOOS=linux GOARCH=386 go test -short ./...
89
90 - name: Build s2c
91 run: go build github.com/klauspost/compress/s2/cmd/s2c && go build github.com/klauspost/compress/s2/cmd/s2d&&./s2c -verify s2c &&./s2d s2c.s2&&rm ./s2c&&rm s2d&&rm s2c.s2
92
93 - name: goreleaser deprecation
94 run: curl -sfL https://git.io/goreleaser | VERSION=v1.20.0 sh -s -- check
95
96 - name: goreleaser snapshot
97 run: curl -sL https://git.io/goreleaser | VERSION=v1.20.0 sh -s -- --snapshot --skip-publish --rm-dist
98
99 - name: Test S2 GOAMD64 v3
100 env:
101 GOAMD64: v3
102 shell: bash {0}
103 run: go test . -test.run=None;if [ $? -eq 0 ]; then go test ./s2/...; else true; fi
104
105 - name: Test GOAMD64 v4
106 env:
107 GOAMD64: v4
108 shell: bash {0}
109 run: go test . -test.run=None;if [ $? -eq 0 ]; then go test ./s2/...; else true; fi
110
111 fuzz-s2:
112 env:
113 CGO_ENABLED: 0
114 runs-on: ubuntu-latest
115 steps:
116 - name: Set up Go
117 uses: actions/setup-go@v5
118 with:
119 go-version: 1.22.x
120
121 - name: Checkout code
122 uses: actions/checkout@v4
123
124 - name: S2/FuzzDictBlocks
125 run: go test -run=none -fuzz=FuzzDictBlocks -fuzztime=100000x -test.fuzzminimizetime=10ms ./s2/.
126
127 - name: S2/FuzzEncodingBlocks
128 run: go test -run=none -fuzz=FuzzEncodingBlocks -fuzztime=500000x -test.fuzzminimizetime=10ms ./s2/.
129
130 - name: S2/FuzzLZ4Block
131 run: go test -run=none -fuzz=FuzzLZ4Block -fuzztime=500000x -test.fuzzminimizetime=10ms ./s2/.
132
133 - name: S2/FuzzDictBlocks/noasm
134 run: go test -tags=noasm -run=none -fuzz=FuzzDictBlocks -fuzztime=100000x -test.fuzzminimizetime=10ms ./s2/.
135
136 - name: S2/FuzzEncodingBlocks/noasm
137 run: go test -tags=noasm -run=none -fuzz=FuzzEncodingBlocks -fuzztime=500000x -test.fuzzminimizetime=10ms ./s2/.
138
139 - name: S2/FuzzLZ4Block/noasm
140 run: go test -tags=noasm -run=none -fuzz=FuzzLZ4Block -fuzztime=500000x -test.fuzzminimizetime=10ms ./s2/.
141
142 fuzz-zstd:
143 env:
144 CGO_ENABLED: 0
145 runs-on: ubuntu-latest
146 steps:
147 - name: Set up Go
148 uses: actions/setup-go@v5
149 with:
150 go-version: 1.22.x
151
152 - name: Checkout code
153 uses: actions/checkout@v4
154
155 - name: zstd/FuzzDecodeAll
156 run: go test -run=none -fuzz=FuzzDecodeAll -fuzztime=500000x -test.fuzzminimizetime=10ms ./zstd/.
157
158 - name: zstd/FuzzDecAllNoBMI2
159 run: go test -run=none -fuzz=FuzzDecAllNoBMI2 -fuzztime=500000x -test.fuzzminimizetime=10ms ./zstd/.
160
161 - name: zstd/FuzzDecoder
162 run: go test -run=none -fuzz=FuzzDecoder -fuzztime=500000x -test.fuzzminimizetime=10ms ./zstd/.
163
164 - name: zstd/FuzzNoBMI2Dec
165 run: go test -run=none -fuzz=FuzzNoBMI2Dec -fuzztime=500000x -test.fuzzminimizetime=10ms ./zstd/.
166
167 - name: zstd/FuzzEncoding
168 run: cd zstd&&go test -run=none -fuzz=FuzzEncoding -fuzztime=250000x -test.fuzzminimizetime=10ms -fuzz-end=3&&cd ..
169
170 - name: zstd/FuzzDecodeAll/noasm
171 run: go test -tags=noasm -run=none -fuzz=FuzzDecodeAll -fuzztime=500000x -test.fuzzminimizetime=10ms ./zstd/.
172
173 - name: zstd/FuzzDecoder/noasm
174 run: go test -tags=noasm -run=none -fuzz=FuzzDecoder -fuzztime=500000x -test.fuzzminimizetime=10ms ./zstd/.
175
176 - name: zstd/FuzzEncoding/noasm
177 run: cd zstd&&go test -tags=noasm -run=none -fuzz=FuzzEncoding -fuzztime=250000x -test.fuzzminimizetime=10ms -fuzz-end=3&&cd ..
178
179 - name: zstd/FuzzEncodingBest
180 run: cd zstd&&go test -run=none -fuzz=FuzzEncoding -fuzztime=25000x -test.fuzzminimizetime=10ms -fuzz-start=4&&cd ..
181
182 fuzz-other:
183 env:
184 CGO_ENABLED: 0
185 runs-on: ubuntu-latest
186 steps:
187 - name: Set up Go
188 uses: actions/setup-go@v5
189 with:
190 go-version: 1.22.x
191
192 - name: Checkout code
193 uses: actions/checkout@v4
194
195 - name: flate/FuzzEncoding
196 run: go test -run=none -fuzz=FuzzEncoding -fuzztime=100000x -test.fuzzminimizetime=10ms ./flate/.
197
198 - name: flate/FuzzEncoding/noasm
199 run: go test -run=none -tags=noasm -fuzz=FuzzEncoding -fuzztime=100000x -test.fuzzminimizetime=10ms ./flate/.
200
201 - name: zip/FuzzReader
202 run: go test -run=none -fuzz=FuzzReader -fuzztime=500000x -test.fuzzminimizetime=10ms ./zip/.
203
204 - name: fse/FuzzCompress
205 run: go test -run=none -fuzz=FuzzCompress -fuzztime=1000000x -test.fuzzminimizetime=10ms ./fse/.
206
207 - name: fse/FuzzDecompress
208 run: go test -run=none -fuzz=FuzzDecompress -fuzztime=1000000x -test.fuzzminimizetime=10ms ./fse/.
View as plain text