forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#69705 - ehuss:toolstate-remove-redundant-be…
…ta, r=Mark-Simulacrum Toolstate: remove redundant beta-week check. I made a bit of a mistake in rust-lang#69624. The "beta regression" doesn't need to be checked twice. I also rolled up rust-lang#69693 to avoid merge conflicts.
- Loading branch information
Showing
3 changed files
with
29 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -215,13 +215,21 @@ impl Step for ToolStateCheck { | |
tool, old_state, state | ||
); | ||
} else { | ||
// This warning only appears in the logs, which most | ||
// people won't read. It's mostly here for testing and | ||
// debugging. | ||
eprintln!( | ||
"warning: Tool `{}` is not test-pass (is `{}`), \ | ||
this should be fixed before beta is branched.", | ||
tool, state | ||
); | ||
} | ||
} | ||
// `publish_toolstate.py` is responsible for updating | ||
// `latest.json` and creating comments/issues warning people | ||
// if there is a regression. That all happens in a separate CI | ||
// job on the master branch once the PR has passed all tests | ||
// on the `auto` branch. | ||
} | ||
} | ||
|
||
|
@@ -230,7 +238,7 @@ impl Step for ToolStateCheck { | |
} | ||
|
||
if builder.config.channel == "nightly" && env::var_os("TOOLSTATE_PUBLISH").is_some() { | ||
commit_toolstate_change(&toolstates, in_beta_week); | ||
commit_toolstate_change(&toolstates); | ||
} | ||
} | ||
|
||
|
@@ -325,11 +333,11 @@ fn prepare_toolstate_config(token: &str) { | |
Err(_) => false, | ||
}; | ||
if !success { | ||
panic!("git config key={} value={} successful (status: {:?})", key, value, status); | ||
panic!("git config key={} value={} failed (status: {:?})", key, value, status); | ||
} | ||
} | ||
|
||
// If changing anything here, then please check that src/ci/publish_toolstate.sh is up to date | ||
// If changing anything here, then please check that `src/ci/publish_toolstate.sh` is up to date | ||
// as well. | ||
git_config("user.email", "[email protected]"); | ||
git_config("user.name", "Rust Toolstate Update"); | ||
|
@@ -373,14 +381,14 @@ fn read_old_toolstate() -> Vec<RepoState> { | |
/// | ||
/// * See <https://help.github.com/articles/about-commit-email-addresses/> | ||
/// if a private email by GitHub is wanted. | ||
fn commit_toolstate_change(current_toolstate: &ToolstateData, in_beta_week: bool) { | ||
let old_toolstate = read_old_toolstate(); | ||
|
||
fn commit_toolstate_change(current_toolstate: &ToolstateData) { | ||
let message = format!("({} CI update)", OS.expect("linux/windows only")); | ||
let mut success = false; | ||
for _ in 1..=5 { | ||
// Update the toolstate results (the new commit-to-toolstate mapping) in the toolstate repo. | ||
change_toolstate(¤t_toolstate, &old_toolstate, in_beta_week); | ||
// Upload the test results (the new commit-to-toolstate mapping) to the toolstate repo. | ||
// This does *not* change the "current toolstate"; that only happens post-landing | ||
// via `src/ci/docker/publish_toolstate.sh`. | ||
publish_test_results(¤t_toolstate); | ||
|
||
// `git commit` failing means nothing to commit. | ||
let status = t!(Command::new("git") | ||
|
@@ -429,31 +437,12 @@ fn commit_toolstate_change(current_toolstate: &ToolstateData, in_beta_week: bool | |
} | ||
} | ||
|
||
fn change_toolstate( | ||
current_toolstate: &ToolstateData, | ||
old_toolstate: &[RepoState], | ||
in_beta_week: bool, | ||
) { | ||
let mut regressed = false; | ||
for repo_state in old_toolstate { | ||
let tool = &repo_state.tool; | ||
let state = repo_state.state(); | ||
let new_state = current_toolstate[tool.as_str()]; | ||
|
||
if new_state != state { | ||
eprintln!("The state of `{}` has changed from `{}` to `{}`", tool, state, new_state); | ||
if new_state < state { | ||
if !NIGHTLY_TOOLS.iter().any(|(name, _path)| name == tool) { | ||
regressed = true; | ||
} | ||
} | ||
} | ||
} | ||
|
||
if regressed && in_beta_week { | ||
std::process::exit(1); | ||
} | ||
|
||
/// Updates the "history" files with the latest results. | ||
/// | ||
/// These results will later be promoted to `latest.json` by the | ||
/// `publish_toolstate.py` script if the PR passes all tests and is merged to | ||
/// master. | ||
fn publish_test_results(current_toolstate: &ToolstateData) { | ||
let commit = t!(std::process::Command::new("git").arg("rev-parse").arg("HEAD").output()); | ||
let commit = t!(String::from_utf8(commit.stdout)); | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters