CI: diff with main and HEAD^ (#945)
This commit is contained in:
parent
162de0ceaf
commit
55e220f0e8
@ -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
|
||||||
|
|
||||||
|
@ -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 mut files = HashSet::<PathBuf>::default();
|
||||||
|
for commit_name in commits {
|
||||||
let args = vec!["--name-only", commit_name];
|
let args = vec!["--name-only", commit_name];
|
||||||
let diff = run_git_diff(&args);
|
for file in run_git_diff(&args)
|
||||||
diff.lines()
|
.lines()
|
||||||
.map(PathBuf::from)
|
.map(PathBuf::from)
|
||||||
.filter(|x| x.is_file())
|
.filter(|x| x.is_file())
|
||||||
.collect()
|
{
|
||||||
|
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 {
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user