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)
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

View File

@ -20,17 +20,24 @@ pub fn run_git_diff(args: &[&str]) -> String {
}
#[must_use]
pub fn get_diffing_files(commit_name: &str) -> Vec<PathBuf> {
pub fn get_diffing_files(commits: &[String]) -> HashSet<PathBuf> {
let mut files = HashSet::<PathBuf>::default();
for commit_name in commits {
let args = vec!["--name-only", commit_name];
let diff = run_git_diff(&args);
diff.lines()
for file in run_git_diff(&args)
.lines()
.map(PathBuf::from)
.filter(|x| x.is_file())
.collect()
{
files.insert(file);
}
}
files
}
#[allow(clippy::implicit_hasher)]
#[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
let mut crates = HashSet::default();
for file in diffing_files {

View File

@ -5,13 +5,13 @@ pub use diffing::*;
fn main() {
let args: Vec<String> = 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);