feat(test.rs): Lookup the commit with cat-file to avoid re-fetches

This commit is contained in:
tempdragon 2024-02-14 17:59:16 +08:00
parent 452ebf5f37
commit 17e329777f

View File

@ -511,17 +511,30 @@ fn setup_rustc(env: &mut Env, args: &TestArg) -> Result<PathBuf, String> {
Some(commit_hash) => commit_hash, Some(commit_hash) => commit_hash,
None => return Err("Couldn't retrieve rustc commit hash".to_string()), None => return Err("Couldn't retrieve rustc commit hash".to_string()),
}; };
run_command_with_output_and_env( let has_commit = {
&[ if let Ok(ty) = run_command_with_env(
&"git", &[&"git", &"cat-file", &"-t", &rustc_commit.as_str()],
&"fetch", rust_dir,
&"https://github.com/rust-lang/rust.git", Some(env),
&rustc_commit.as_str(), ) {
&"--depth=1", String::from_utf8_lossy(&ty.stdout).to_string() == "commit"
], } else {
rust_dir, false
Some(env), }
)?; };
if !has_commit {
run_command_with_output_and_env(
&[
&"git",
&"fetch",
&"https://github.com/rust-lang/rust.git",
&rustc_commit.as_str(),
&"--depth=1",
],
rust_dir,
Some(env),
)?
};
if rustc_commit != "unknown" { if rustc_commit != "unknown" {
run_command_with_output_and_env( run_command_with_output_and_env(
&[&"git", &"checkout", &rustc_commit], &[&"git", &"checkout", &rustc_commit],