diff --git a/fuzz/fuzz.rs b/fuzz/fuzz.rs index 4e48f1d..610e08b 100644 --- a/fuzz/fuzz.rs +++ b/fuzz/fuzz.rs @@ -68,19 +68,30 @@ pub unsafe extern "C" fn LLVMFuzzerTestOneInput(input: *const u8, len: usize) -> result => panic!("got unexpected result from python: {result}"), }; - let gentoo_utils_result = Atom::parser().check_finished(InputIter::new(atom)).is_ok(); + let gentoo_utils_result = Atom::parser().parse_finished(InputIter::new(atom)); match (portage_result, gentoo_utils_result) { - (true, true) => { + (true, Ok(_)) => { eprintln!("agreement that {atom} is valid"); } - (false, false) => { + (false, Err(_)) => { eprintln!("agreement that {atom} is invalid"); } - (true, false) => { + (true, Err(_)) => { panic!("rejected valid atom: {atom}"); } - (false, true) => { + (false, Ok(atom)) + if atom.usedeps().iter().any(|usedep| { + atom.usedeps() + .iter() + .filter(|u| usedep.flag() == u.flag()) + .count() + > 1 + }) => + { + eprintln!("disagreement due to duplicates in usedeps"); + } + (false, Ok(_)) => { panic!("accpeted invalid atom: {atom}") } }