CI: diff with main and HEAD^ (#945)

This commit is contained in:
Andrea Fioraldi 2022-12-14 01:10:36 +01:00 committed by GitHub
parent 162de0ceaf
commit 55e220f0e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 13 deletions

View File

@ -10,7 +10,7 @@ if [[ -z "${RUN_ON_CI}" ]]; then
backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d) backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d)
else else
cargo build -p build_and_test_fuzzers 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="" backtrace_fuzzers=""
fi fi

View File

@ -20,17 +20,24 @@ pub fn run_git_diff(args: &[&str]) -> String {
} }
#[must_use] #[must_use]
pub fn get_diffing_files(commit_name: &str) -> Vec<PathBuf> { pub fn get_diffing_files(commits: &[String]) -> HashSet<PathBuf> {
let args = vec!["--name-only", commit_name]; let mut files = HashSet::<PathBuf>::default();
let diff = run_git_diff(&args); for commit_name in commits {
diff.lines() let args = vec!["--name-only", commit_name];
.map(PathBuf::from) for file in run_git_diff(&args)
.filter(|x| x.is_file()) .lines()
.collect() .map(PathBuf::from)
.filter(|x| x.is_file())
{
files.insert(file);
}
}
files
} }
#[allow(clippy::implicit_hasher)]
#[must_use] #[must_use]
pub fn get_diffing_crates(diffing_files: &[PathBuf]) -> HashSet<PathBuf> { pub fn get_diffing_crates(diffing_files: &HashSet<PathBuf>) -> HashSet<PathBuf> {
// TODO maybe consider using a combination of this and https://docs.rs/cargo/0.28.0/cargo/sources/path/struct.PathSource.html // 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(); let mut crates = HashSet::default();
for file in diffing_files { for file in diffing_files {

View File

@ -5,13 +5,13 @@ pub use diffing::*;
fn main() { fn main() {
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
let commit = if args.len() > 1 { let commits = if args.len() > 1 {
&args[1] args[1..].to_vec()
} else { } 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 mut diff_crates = get_diffing_crates(&files);
let all_crates = find_all_crates(); let all_crates = find_all_crates();
extend_diffing_crates_with_deps(&mut diff_crates, &all_crates); extend_diffing_crates_with_deps(&mut diff_crates, &all_crates);