about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authoronur-ozkan <work@onurozkan.dev>2024-10-09 22:22:13 +0300
committeronur-ozkan <work@onurozkan.dev>2024-10-10 10:33:24 +0300
commitb27aee9b8b21b367d12b499de29023d429b0ba79 (patch)
tree630759d01629b7bf771c142faf2bdc718a76a316 /src/bootstrap
parentdf1b5d3cc2117f1ee96abca25678bc5f5604d450 (diff)
stabilize `ci_rustc_if_unchanged_logic` test
Signed-off-by: onur-ozkan <work@onurozkan.dev>
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/src/core/builder/tests.rs39
1 files changed, 11 insertions, 28 deletions
diff --git a/src/bootstrap/src/core/builder/tests.rs b/src/bootstrap/src/core/builder/tests.rs
index 4ab1ef1ad0f..695a66834d4 100644
--- a/src/bootstrap/src/core/builder/tests.rs
+++ b/src/bootstrap/src/core/builder/tests.rs
@@ -1,7 +1,5 @@
 use std::thread;
 
-use build_helper::git::get_closest_merge_commit;
-
 use super::*;
 use crate::Flags;
 use crate::core::build_steps::doc::DocumentationFormat;
@@ -214,8 +212,6 @@ fn alias_and_path_for_library() {
     assert_eq!(first(cache.all::<doc::Std>()), &[doc_std!(A => A, stage = 0)]);
 }
 
-// FIXME: This is failing in various runners in merge CI.
-#[ignore]
 #[test]
 fn ci_rustc_if_unchanged_logic() {
     let config = Config::parse_inner(
@@ -227,10 +223,6 @@ fn ci_rustc_if_unchanged_logic() {
         |&_| Ok(Default::default()),
     );
 
-    if config.rust_info.is_from_tarball() {
-        return;
-    }
-
     let build = Build::new(config.clone());
     let builder = Builder::new(&build);
 
@@ -240,26 +232,17 @@ fn ci_rustc_if_unchanged_logic() {
 
     builder.run_step_descriptions(&Builder::get_step_descriptions(config.cmd.kind()), &[]);
 
-    let compiler_path = build.src.join("compiler");
-    let library_path = build.src.join("library");
-
-    let commit =
-        get_closest_merge_commit(Some(&builder.config.src), &builder.config.git_config(), &[
-            compiler_path.clone(),
-            library_path.clone(),
-        ])
-        .unwrap();
-
-    let has_changes = !helpers::git(Some(&builder.src))
-        .args(["diff-index", "--quiet", &commit])
-        .arg("--")
-        .args([compiler_path, library_path])
-        .as_command_mut()
-        .status()
-        .unwrap()
-        .success();
-
-    assert!(has_changes == config.download_rustc_commit.is_none());
+    // Make sure "if-unchanged" logic doesn't try to use CI rustc while there are changes
+    // in compiler and/or library.
+    if config.download_rustc_commit.is_some() {
+        let has_changes =
+            config.last_modified_commit(&["compiler", "library"], "download-rustc", true).is_none();
+
+        assert!(
+            !has_changes,
+            "CI-rustc can't be used with 'if-unchanged' while there are changes in compiler and/or library."
+        );
+    }
 }
 
 mod defaults {