@@ -254,13 +254,20 @@ jobs:
254254 RUST_BACKTRACE=1 cargo fuzz run --no-default-features --features="$features" $target -- -max_total_time=10
255255 done
256256
257- fuzz-decompression :
258- name : Fuzz decompression with a custom corpus
257+ fuzz-code-coverage :
258+ name : Fuzz with code coverage
259259 runs-on : ubuntu-latest
260260 strategy :
261261 matrix :
262- features :
263- - ' default'
262+ include :
263+ - fuzz_target : uncompress2
264+ corpus : " gzip-files/compressed"
265+ features : ' --no-default-features --features="disable-checksum"'
266+ flags : fuzz-decompress
267+ - fuzz_target : compress
268+ corpus : " "
269+ features : ' '
270+ flags : fuzz-compress
264271 steps :
265272 - name : Checkout sources
266273 uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
@@ -275,30 +282,33 @@ jobs:
275282 uses : taiki-e/install-action@56ab7930c591507f833cbaed864d201386d518a8
276283 with :
277284 tool : cargo-fuzz,rustfilt
278- - name : Fuzz decompression with custom corpus
279- env :
280- RUST_BACKTRACE : " 1"
285+ - name : Download custom decompression corpus
286+ if : ${{ contains(matrix.corpus, 'gzip-files') }}
281287 run : |
282288 ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/llvm-cov show --help
283289 wget https://github.com/folkertdev/compression-corpus/releases/download/2025-04-09-154431/gzip-files.zip
284290 unzip gzip-files.zip -d gzip-files
285- cargo fuzz run --no-default-features --features="disable-checksum" uncompress2 gzip-files/compressed -- -max_total_time=10
291+ - name : Run `cargo fuzz`
292+ env :
293+ RUST_BACKTRACE : " 1"
294+ run : |
295+ cargo fuzz run ${{matrix.features}} ${{matrix.fuzz_target}} ${{matrix.corpus}} -- -max_total_time=10
286296 - name : Fuzz codecov
287297 run : |
288- cargo fuzz coverage --no-default- features --features="disable-checksum" uncompress2 gzip-files/compressed
298+ cargo fuzz coverage ${{matrix. features}} ${{matrix.fuzz_target}} ${{matrix.corpus}}
289299 ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin/llvm-cov export -Xdemangler=rustfilt \
290- target/x86_64-unknown-linux-gnu/coverage/x86_64-unknown-linux-gnu/release/uncompress2 \
291- -instr-profile=fuzz/coverage/uncompress2 /coverage.profdata \
300+ target/x86_64-unknown-linux-gnu/coverage/x86_64-unknown-linux-gnu/release/${{matrix.fuzz_target}} \
301+ -instr-profile=fuzz/coverage/${{matrix.fuzz_target}} /coverage.profdata \
292302 --format=lcov \
293303 -ignore-filename-regex="\.cargo|\.rustup" > lcov.info
294304 - name : Upload coverage to Codecov
295305 uses : codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d
296306 with :
297307 files : ./lcov.info
298308 fail_ci_if_error : false
299- flags : fuzz-decompress
309+ flags : ${{ matrix.flags }}
300310 token : ${{ secrets.CODECOV_TOKEN }}
301- name : fuzz
311+ name : fuzz
302312
303313 link-c-dynamic-library :
304314 name : vanilla dynamic library
0 commit comments