From d996593016181013ef76a2d0dcea3e2eabecdd81 Mon Sep 17 00:00:00 2001 From: Chris Hennick <4961925+Pr0methean@users.noreply.github.com> Date: Wed, 8 May 2024 15:15:50 -0700 Subject: [PATCH] ci(fuzz): Optimize final read-back, and skip it if redundant --- fuzz/fuzz_targets/fuzz_write.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fuzz/fuzz_targets/fuzz_write.rs b/fuzz/fuzz_targets/fuzz_write.rs index ff456b8e..5c87e753 100644 --- a/fuzz/fuzz_targets/fuzz_write.rs +++ b/fuzz/fuzz_targets/fuzz_write.rs @@ -26,7 +26,7 @@ pub enum BasicFileOperation<'k> { } } -#[derive(Arbitrary, Clone, Debug)] +#[derive(Arbitrary, Clone, Debug, Eq, PartialEq)] pub enum ReopenOption { DoNotReopen, ViaFinish, @@ -127,6 +127,12 @@ where fuzz_target!(|test_case: FuzzTestCase| { let mut writer = zip::ZipWriter::new(Cursor::new(Vec::new())); writer.set_raw_comment(test_case.comment); + let mut final_reopen = false; + if let Some((last_op, _)) = test_case.operations.last() { + if last_op.reopen != ReopenOption::ViaFinishIntoReadable { + final_reopen = true; + } + } for (operation, abort) in test_case.operations { let _ = do_operation( &mut writer, @@ -135,5 +141,7 @@ fuzz_target!(|test_case: FuzzTestCase| { test_case.flush_on_finish_file, ); } - let _ = zip::ZipArchive::new(writer.finish().unwrap()); + if final_reopen { + let _ = writer.finish_into_readable().unwrap(); + } });