diff --git a/scripts/test_all_fuzzers.sh b/scripts/test_all_fuzzers.sh index 3a2005ba07..83b786ce87 100755 --- a/scripts/test_all_fuzzers.sh +++ b/scripts/test_all_fuzzers.sh @@ -10,7 +10,7 @@ if [[ -z "${RUN_ON_CI}" ]]; then backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d) else cargo build -p build_and_test_fuzzers - fuzzers=$(cargo run -p build_and_test_fuzzers -- remotes/origin/main) + fuzzers=$(cargo run -p build_and_test_fuzzers -- "remotes/origin/main" "HEAD^") backtrace_fuzzers="" fi diff --git a/utils/build_and_test_fuzzers/src/diffing.rs b/utils/build_and_test_fuzzers/src/diffing.rs index 21c52c4728..8b770e38cb 100644 --- a/utils/build_and_test_fuzzers/src/diffing.rs +++ b/utils/build_and_test_fuzzers/src/diffing.rs @@ -20,17 +20,24 @@ pub fn run_git_diff(args: &[&str]) -> String { } #[must_use] -pub fn get_diffing_files(commit_name: &str) -> Vec { - let args = vec!["--name-only", commit_name]; - let diff = run_git_diff(&args); - diff.lines() - .map(PathBuf::from) - .filter(|x| x.is_file()) - .collect() +pub fn get_diffing_files(commits: &[String]) -> HashSet { + let mut files = HashSet::::default(); + for commit_name in commits { + let args = vec!["--name-only", commit_name]; + for file in run_git_diff(&args) + .lines() + .map(PathBuf::from) + .filter(|x| x.is_file()) + { + files.insert(file); + } + } + files } +#[allow(clippy::implicit_hasher)] #[must_use] -pub fn get_diffing_crates(diffing_files: &[PathBuf]) -> HashSet { +pub fn get_diffing_crates(diffing_files: &HashSet) -> HashSet { // TODO maybe consider using a combination of this and https://docs.rs/cargo/0.28.0/cargo/sources/path/struct.PathSource.html let mut crates = HashSet::default(); for file in diffing_files { diff --git a/utils/build_and_test_fuzzers/src/main.rs b/utils/build_and_test_fuzzers/src/main.rs index a9ece18e1b..61e5d6f5a2 100644 --- a/utils/build_and_test_fuzzers/src/main.rs +++ b/utils/build_and_test_fuzzers/src/main.rs @@ -5,13 +5,13 @@ pub use diffing::*; fn main() { let args: Vec = env::args().collect(); - let commit = if args.len() > 1 { - &args[1] + let commits = if args.len() > 1 { + args[1..].to_vec() } else { - "origin/main" + vec!["origin/main".into()] }; - let files = get_diffing_files(commit); + let files = get_diffing_files(&commits); let mut diff_crates = get_diffing_crates(&files); let all_crates = find_all_crates(); extend_diffing_crates_with_deps(&mut diff_crates, &all_crates);