2 # Tests longer than 10mn
5 group: long-${{ github.ref }}
6 cancel-in-progress: true
10 branches: [ dev, release, actionsTest ]
16 runs-on: ubuntu-latest
18 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
24 runs-on: ubuntu-latest
27 READFROMBLOCKDEVICE: 1
29 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
37 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
39 run: make test # make -c lib all doesn't work because of the fact that it's not a tty
43 runs-on: ubuntu-latest
46 READFROMBLOCKDEVICE: 1
48 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
51 sudo apt-get -qqq update
53 CFLAGS="-m32" make test
55 no-intrinsics-fuzztest:
56 runs-on: ubuntu-latest
58 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
59 - name: no intrinsics fuzztest
60 run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest
63 runs-on: ubuntu-latest
65 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
66 - name: thread sanitizer zstreamtest
67 run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream
70 runs-on: ubuntu-latest
72 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
73 - name: undefined behavior sanitizer zstreamtest
74 run: CC=clang make uasan-test-zstream
78 runs-on: ubuntu-latest
80 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
81 - name: thread sanitizer fuzztest
82 run: CC=clang make tsan-fuzztest
85 big-tests-zstreamtest32:
86 runs-on: ubuntu-latest
88 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
89 - name: zstream tests in 32bit mode, with big tests
91 sudo apt-get -qqq update
93 CC=clang make -C tests test-zstream32 FUZZER_FLAGS="--big-tests"
96 gcc-8-asan-ubsan-testzstd:
97 runs-on: ubuntu-latest
99 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
100 - name: gcc-8 + ASan + UBSan + Test Zstd
101 # See https://askubuntu.com/a/1428822
103 echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
104 sudo apt-get -qqq update
106 CC=gcc-8 make -j uasan-test-zstd </dev/null V=1
108 clang-asan-ubsan-testzstd:
109 runs-on: ubuntu-latest
111 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
112 - name: clang + ASan + UBSan + Test Zstd
113 run: CC=clang make -j uasan-test-zstd </dev/null V=1
115 gcc-asan-ubsan-testzstd-32bit:
116 runs-on: ubuntu-latest
118 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
119 - name: ASan + UBSan + Test Zstd, 32bit mode
121 sudo apt-get -qqq update
123 make -j uasan-test-zstd32 V=1
125 # Note : external libraries must be turned off when using MSAN tests,
126 # because they are not msan-instrumented,
127 # so any data coming from these libraries is always considered "uninitialized"
129 gcc-8-asan-ubsan-fuzz:
130 runs-on: ubuntu-latest
132 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
133 - name: gcc-8 + ASan + UBSan + Fuzz Test
134 # See https://askubuntu.com/a/1428822
136 echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
137 sudo apt-get -qqq update
139 CC=gcc-8 FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
141 clang-asan-ubsan-fuzz:
142 runs-on: ubuntu-latest
144 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
145 - name: clang + ASan + UBSan + Fuzz Test
146 run: CC=clang FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
148 gcc-asan-ubsan-fuzz32:
149 runs-on: ubuntu-latest
151 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
152 - name: ASan + UBSan + Fuzz Test 32bit
154 sudo apt-get -qqq update
156 CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
158 clang-asan-ubsan-fuzz32:
159 runs-on: ubuntu-latest
161 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
162 - name: clang + ASan + UBSan + Fuzz Test 32bit
164 sudo apt-get -qqq update
166 CC=clang CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
168 asan-ubsan-regression:
169 runs-on: ubuntu-latest
171 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
172 - name: ASan + UBSan + Regression Test
173 run: make -j uasanregressiontest
175 clang-ubsan-regression:
176 runs-on: ubuntu-latest
178 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
179 - name: clang + ASan + UBSan + Regression Test
180 run: CC=clang make -j uasanregressiontest
183 runs-on: ubuntu-latest
185 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
186 - name: MSan + Regression Test
187 run: make -j msanregressiontest
189 clang-msan-fuzz-unoptimized:
190 runs-on: ubuntu-latest
192 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
193 - name: clang + MSan + Fuzz Test
195 sudo apt-get -qqq update
196 sudo apt-get install clang
197 CC=clang MOREFLAGS="-O0" make clean msan-fuzztest
200 runs-on: ubuntu-latest
202 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
203 - name: clang + MSan + Fuzz Test
205 sudo apt-get -qqq update
206 sudo apt-get install clang
207 CC=clang FUZZER_FLAGS="--long-tests" make clean msan-fuzztest
211 runs-on: ubuntu-latest
213 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
214 - name: clang + MSan + Test Zstd
217 sudo apt-get install clang
218 CC=clang make msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0 V=1
221 runs-on: ubuntu-latest
223 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
224 - name: Qemu ARM emulation + Fuzz Test
226 sudo apt-get -qqq update
231 runs-on: ubuntu-latest
233 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
234 - name: valgrind + fuzz test stack mode # ~ 7mn
235 shell: 'script -q -e -c "bash {0}"'
237 sudo apt-get -qqq update
239 make -C tests test-valgrind
241 make -C tests test-fuzzer-stackmode
244 runs-on: windows-latest
249 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
250 - uses: msys2/setup-msys2@5beef6d11f48bba68b9eb503e3adc60b23c0cc36 # tag=v2
255 # Based on https://ariya.io/2020/07/on-github-actions-with-msys2
256 - name: install mingw gcc
257 run: pacman --noconfirm -S gcc
258 - name: MINGW64 gcc fuzztest
262 export FUZZERTEST="-T2mn"
263 export ZSTREAM_TESTTIME="-T2mn"
264 echo "Testing $CC $CXX MINGW64"
268 make -C tests fuzztest
272 runs-on: ubuntu-latest
276 sanitizer: [address, undefined, memory]
278 - name: Build Fuzzers (${{ matrix.sanitizer }})
280 uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
282 oss-fuzz-project-name: 'zstd'
284 sanitizer: ${{ matrix.sanitizer }}
285 - name: Run Fuzzers (${{ matrix.sanitizer }})
286 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
288 oss-fuzz-project-name: 'zstd'
291 sanitizer: ${{ matrix.sanitizer }}
293 uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3.1.2
294 if: failure() && steps.build.outcome == 'success'
296 name: ${{ matrix.sanitizer }}-artifacts
297 path: ./out/artifacts