git subrepo pull (merge) --force deps/libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.5 / .github / workflows / dev-long-tests.yml
1 name: dev-long-tests
2 # Tests longer than 10mn
3
4 concurrency:
5   group: long-${{ github.ref }}
6   cancel-in-progress: true
7
8 on:
9   pull_request:
10     branches: [ dev, release, actionsTest ]
11
12 permissions: read-all
13
14 jobs:
15   make-all:
16     runs-on: ubuntu-latest
17     steps:
18     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
19     - name: make all
20       run: make all
21
22   # lasts ~24mn
23   make-test:
24     runs-on: ubuntu-latest
25     env:
26       DEVNULLRIGHTS: 1
27       READFROMBLOCKDEVICE: 1
28     steps:
29     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
30     - name: make test
31       run: make test
32
33   # lasts ~26mn
34   make-test-osx:
35     runs-on: macos-latest
36     steps:
37     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
38     - name: OS-X test
39       run: make test # make -c lib all doesn't work because of the fact that it's not a tty
40
41   # lasts ~24mn
42   make-test-32bit:
43     runs-on: ubuntu-latest
44     env:
45       DEVNULLRIGHTS: 1
46       READFROMBLOCKDEVICE: 1
47     steps:
48     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
49     - name: make test
50       run: |
51         sudo apt-get -qqq update
52         make libc6install
53         CFLAGS="-m32" make test
54
55   no-intrinsics-fuzztest:
56     runs-on: ubuntu-latest
57     steps:
58     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
59     - name: no intrinsics fuzztest
60       run: MOREFLAGS="-DZSTD_NO_INTRINSICS" make -C tests fuzztest
61
62   tsan-zstreamtest:
63     runs-on: ubuntu-latest
64     steps:
65     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
66     - name: thread sanitizer zstreamtest
67       run: CC=clang ZSTREAM_TESTTIME=-T3mn make tsan-test-zstream
68
69   ubsan-zstreamtest:
70     runs-on: ubuntu-latest
71     steps:
72     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
73     - name: undefined behavior sanitizer zstreamtest
74       run: CC=clang make uasan-test-zstream
75
76   # lasts ~15mn
77   tsan-fuzztest:
78     runs-on: ubuntu-latest
79     steps:
80     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
81     - name: thread sanitizer fuzztest
82       run: CC=clang make tsan-fuzztest
83
84
85   big-tests-zstreamtest32:
86     runs-on: ubuntu-latest
87     steps:
88     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
89     - name: zstream tests in 32bit mode, with big tests
90       run: |
91         sudo apt-get -qqq update
92         make libc6install
93         CC=clang make -C tests test-zstream32 FUZZER_FLAGS="--big-tests"
94
95   # lasts ~23mn
96   gcc-8-asan-ubsan-testzstd:
97     runs-on: ubuntu-latest
98     steps:
99     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
100     - name: gcc-8 + ASan + UBSan + Test Zstd
101       # See https://askubuntu.com/a/1428822
102       run: |
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
105         make gcc8install
106         CC=gcc-8 make -j uasan-test-zstd </dev/null V=1
107
108   clang-asan-ubsan-testzstd:
109     runs-on: ubuntu-latest
110     steps:
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
114
115   gcc-asan-ubsan-testzstd-32bit:
116     runs-on: ubuntu-latest
117     steps:
118     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
119     - name: ASan + UBSan + Test Zstd, 32bit mode
120       run: |
121         sudo apt-get -qqq update
122         make libc6install
123         make -j uasan-test-zstd32 V=1
124
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"
128
129   gcc-8-asan-ubsan-fuzz:
130     runs-on: ubuntu-latest
131     steps:
132     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
133     - name: gcc-8 + ASan + UBSan + Fuzz Test
134       # See https://askubuntu.com/a/1428822
135       run: |
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
138         make gcc8install
139         CC=gcc-8 FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
140
141   clang-asan-ubsan-fuzz:
142     runs-on: ubuntu-latest
143     steps:
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
147
148   gcc-asan-ubsan-fuzz32:
149     runs-on: ubuntu-latest
150     steps:
151     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
152     - name: ASan + UBSan + Fuzz Test 32bit
153       run: |
154         sudo apt-get -qqq update
155         make libc6install
156         CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
157
158   clang-asan-ubsan-fuzz32:
159     runs-on: ubuntu-latest
160     steps:
161     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
162     - name: clang + ASan + UBSan + Fuzz Test 32bit
163       run: |
164         sudo apt-get -qqq update
165         make libc6install
166         CC=clang CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
167
168   asan-ubsan-regression:
169     runs-on: ubuntu-latest
170     steps:
171     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
172     - name: ASan + UBSan + Regression Test
173       run: make -j uasanregressiontest
174
175   clang-ubsan-regression:
176     runs-on: ubuntu-latest
177     steps:
178     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
179     - name: clang + ASan + UBSan + Regression Test
180       run: CC=clang make -j uasanregressiontest
181
182   msan-regression:
183     runs-on: ubuntu-latest
184     steps:
185     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
186     - name: MSan + Regression Test
187       run: make -j msanregressiontest
188
189   clang-msan-fuzz-unoptimized:
190     runs-on: ubuntu-latest
191     steps:
192       - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
193       - name: clang + MSan + Fuzz Test
194         run: |
195           sudo apt-get -qqq update
196           sudo apt-get install clang
197           CC=clang MOREFLAGS="-O0" make clean msan-fuzztest
198
199   clang-msan-fuzz:
200     runs-on: ubuntu-latest
201     steps:
202     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
203     - name: clang + MSan + Fuzz Test
204       run: |
205         sudo apt-get -qqq update
206         sudo apt-get install clang
207         CC=clang FUZZER_FLAGS="--long-tests" make clean msan-fuzztest
208
209   # lasts ~24mn
210   clang-msan-testzstd:
211     runs-on: ubuntu-latest
212     steps:
213     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
214     - name: clang + MSan + Test Zstd
215       run: |
216         sudo apt-get update
217         sudo apt-get install clang
218         CC=clang make msan-test-zstd HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0 V=1
219
220   armfuzz:
221       runs-on: ubuntu-latest
222       steps:
223       - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
224       - name: Qemu ARM emulation + Fuzz Test
225         run: |
226           sudo apt-get -qqq update
227           make arminstall
228           make armfuzz
229
230   valgrind-fuzz-test:
231     runs-on: ubuntu-latest
232     steps:
233     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
234     - name: valgrind + fuzz test stack mode    # ~ 7mn
235       shell: 'script -q -e -c "bash {0}"'
236       run: |
237         sudo apt-get -qqq update
238         make valgrindinstall
239         make -C tests test-valgrind
240         make clean
241         make -C tests test-fuzzer-stackmode
242
243   mingw-long-test:
244     runs-on: windows-latest
245     defaults:
246       run:
247         shell: msys2 {0}
248     steps:
249     - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
250     - uses: msys2/setup-msys2@5beef6d11f48bba68b9eb503e3adc60b23c0cc36 # tag=v2
251       with:
252         msystem: MINGW64
253         install: make
254         update: true
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
259       run: |
260         export CC="gcc"
261         export CXX="g++"
262         export FUZZERTEST="-T2mn"
263         export ZSTREAM_TESTTIME="-T2mn"
264         echo "Testing $CC $CXX MINGW64"
265         make -v
266         $CC --version
267         $CXX --version
268         make -C tests fuzztest
269
270   # lasts ~20mn
271   oss-fuzz:
272     runs-on: ubuntu-latest
273     strategy:
274       fail-fast: false
275       matrix:
276         sanitizer: [address, undefined, memory]
277     steps:
278     - name: Build Fuzzers (${{ matrix.sanitizer }})
279       id: build
280       uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
281       with:
282         oss-fuzz-project-name: 'zstd'
283         dry-run: false
284         sanitizer: ${{ matrix.sanitizer }}
285     - name: Run Fuzzers (${{ matrix.sanitizer }})
286       uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
287       with:
288         oss-fuzz-project-name: 'zstd'
289         fuzz-seconds: 600
290         dry-run: false
291         sanitizer: ${{ matrix.sanitizer }}
292     - name: Upload Crash
293       uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # tag=v3.1.2
294       if: failure() && steps.build.outcome == 'success'
295       with:
296         name: ${{ matrix.sanitizer }}-artifacts
297         path: ./out/artifacts