about summary refs log tree commit diff
path: root/src/tools
diff options
context:
space:
mode:
authorEric Huss <eric@huss.org>2021-06-20 16:36:26 -0700
committerEric Huss <eric@huss.org>2021-06-20 16:36:26 -0700
commit35bf1becaac46ae79c92ee8b87a05b02687eeae7 (patch)
tree6e0629a3030949d5d557e73181747288124d54bf /src/tools
parentf2ef8bf776b7fd8aed8654bbad3c2a8b042a89a7 (diff)
downloadrust-35bf1becaac46ae79c92ee8b87a05b02687eeae7.tar.gz
rust-35bf1becaac46ae79c92ee8b87a05b02687eeae7.zip
tidy: Check that cargo and compiletest share the same rustfix.
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/tidy/src/deps.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs
index 06cec1964a0..ea587210b4f 100644
--- a/src/tools/tidy/src/deps.rs
+++ b/src/tools/tidy/src/deps.rs
@@ -287,6 +287,7 @@ pub fn check(root: &Path, cargo: &Path, bad: &mut bool) {
     check_exceptions(&metadata, EXCEPTIONS, runtime_ids, bad);
     check_dependencies(&metadata, PERMITTED_DEPENDENCIES, RESTRICTED_DEPENDENCY_CRATES, bad);
     check_crate_duplicate(&metadata, FORBIDDEN_TO_HAVE_DUPLICATES, bad);
+    check_rustfix(&metadata, bad);
 
     // Check rustc_codegen_cranelift independently as it has it's own workspace.
     let mut cmd = cargo_metadata::MetadataCommand::new();
@@ -547,3 +548,22 @@ fn normal_deps_of_r<'a>(
         normal_deps_of_r(resolve, &dep.pkg, result);
     }
 }
+
+fn check_rustfix(metadata: &Metadata, bad: &mut bool) {
+    let cargo = pkg_from_name(metadata, "cargo");
+    let compiletest = pkg_from_name(metadata, "compiletest");
+    let cargo_deps = deps_of(metadata, &cargo.id);
+    let compiletest_deps = deps_of(metadata, &compiletest.id);
+    let cargo_rustfix = cargo_deps.iter().find(|p| p.name == "rustfix").unwrap();
+    let compiletest_rustfix = compiletest_deps.iter().find(|p| p.name == "rustfix").unwrap();
+    if cargo_rustfix.version != compiletest_rustfix.version {
+        tidy_error!(
+            bad,
+            "cargo's rustfix version {} does not match compiletest's rustfix version {}\n\
+             rustfix should be kept in sync, update the cargo side first, and then update \
+             compiletest along with cargo.",
+            cargo_rustfix.version,
+            compiletest_rustfix.version
+        );
+    }
+}