diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-06-19 16:50:01 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-06-20 15:49:47 +0200 |
| commit | bbe8a2ad19c0486986a535c103e57fabfbb81441 (patch) | |
| tree | 204677ca4ad58bc6fa08d825b9b82a609a91a035 | |
| parent | 21805038412de0224f7cefe3b4c98cc7fda17c39 (diff) | |
| download | rust-bbe8a2ad19c0486986a535c103e57fabfbb81441.tar.gz rust-bbe8a2ad19c0486986a535c103e57fabfbb81441.zip | |
Generate base commit in rustdoc_json tidy checks
| -rw-r--r-- | src/build_helper/src/git.rs | 2 | ||||
| -rw-r--r-- | src/tools/tidy/src/rustdoc_json.rs | 31 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/build_helper/src/git.rs b/src/build_helper/src/git.rs index 438cd14389c..9d1195aadf8 100644 --- a/src/build_helper/src/git.rs +++ b/src/build_helper/src/git.rs @@ -198,7 +198,7 @@ fn get_latest_upstream_commit_that_modified_files( /// author. /// /// If we are in CI, we simply return our first parent. -fn get_closest_upstream_commit( +pub fn get_closest_upstream_commit( git_dir: Option<&Path>, config: &GitConfig<'_>, env: CiEnv, diff --git a/src/tools/tidy/src/rustdoc_json.rs b/src/tools/tidy/src/rustdoc_json.rs index a98c4f4cc3e..3f78d565deb 100644 --- a/src/tools/tidy/src/rustdoc_json.rs +++ b/src/tools/tidy/src/rustdoc_json.rs @@ -3,16 +3,39 @@ use std::process::Command; +use build_helper::ci::CiEnv; +use build_helper::git::{GitConfig, get_closest_upstream_commit}; +use build_helper::stage0_parser::parse_stage0_file; + fn git_diff(base_commit: &str, extra_arg: &str) -> Option<String> { let output = Command::new("git").arg("diff").arg(base_commit).arg(extra_arg).output().ok()?; Some(String::from_utf8_lossy(&output.stdout).into()) } pub fn check(bad: &mut bool) { - let Ok(base_commit) = std::env::var("BASE_COMMIT") else { - // Not in CI so nothing we can check here. - println!("not checking rustdoc JSON `FORMAT_VERSION` update"); - return; + println!("Checking tidy rustdoc_json..."); + let stage0 = parse_stage0_file(); + let base_commit = match get_closest_upstream_commit( + None, + &GitConfig { + nightly_branch: &stage0.config.nightly_branch, + git_merge_commit_email: &stage0.config.git_merge_commit_email, + }, + CiEnv::current(), + ) { + Ok(Some(commit)) => commit, + Ok(None) => { + *bad = true; + eprintln!("No base commit found, skipping rustdoc_json check"); + return; + } + Err(error) => { + *bad = true; + eprintln!( + "Failed to retrieve base commit for rustdoc_json check because of `{error}`, skipping it" + ); + return; + } }; // First we check that `src/rustdoc-json-types` was modified. |
