]> git.lizzy.rs Git - rust.git/blobdiff - src/bootstrap/test.rs
Tweak assertion note in fmt
[rust.git] / src / bootstrap / test.rs
index f3b2a73d3c5dc54fb20e1e037cbf87a2443d92e9..10e07489e1212ce76f804a177b1fa8cc5c7ee8cf 100644 (file)
 use crate::dist;
 use crate::flags::Subcommand;
 use crate::native;
-use crate::tool::{self, Tool, SourceType};
+use crate::tool::{self, SourceType, Tool};
 use crate::toolstate::ToolState;
 use crate::util::{self, dylib_path, dylib_path_var};
 use crate::Crate as CargoCrate;
-use crate::{DocTests, Mode, GitRepo, envify};
+use crate::{envify, DocTests, GitRepo, Mode};
 
 const ADB_TEST_DIR: &str = "/data/tmp/work";
 
@@ -115,16 +115,13 @@ fn run(self, builder: &Builder<'_>) {
         let _time = util::timeit(&builder);
         try_run(
             builder,
-            builder
-                .tool_cmd(Tool::Linkchecker)
-                .arg(builder.out.join(host).join("doc")),
+            builder.tool_cmd(Tool::Linkchecker).arg(builder.out.join(host).join("doc")),
         );
     }
 
     fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
         let builder = run.builder;
-        run.path("src/tools/linkchecker")
-            .default_condition(builder.config.docs)
+        run.path("src/tools/linkchecker").default_condition(builder.config.docs)
     }
 
     fn make_run(run: RunConfig<'_>) {
@@ -147,10 +144,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Cargotest {
-            stage: run.builder.top_stage,
-            host: run.target,
-        });
+        run.builder.ensure(Cargotest { stage: run.builder.top_stage, host: run.target });
     }
 
     /// Runs the `cargotest` tool as compiled in `stage` by the `host` compiler.
@@ -159,10 +153,7 @@ fn make_run(run: RunConfig<'_>) {
     /// test` to ensure that we don't regress the test suites there.
     fn run(self, builder: &Builder<'_>) {
         let compiler = builder.compiler(self.stage, self.host);
-        builder.ensure(compile::Rustc {
-            compiler,
-            target: compiler.host,
-        });
+        builder.ensure(compile::Rustc { compiler, target: compiler.host });
 
         // Note that this is a short, cryptic, and not scoped directory name. This
         // is currently to minimize the length of path on Windows where we otherwise
@@ -197,28 +188,24 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Cargo {
-            stage: run.builder.top_stage,
-            host: run.target,
-        });
+        run.builder.ensure(Cargo { stage: run.builder.top_stage, host: run.target });
     }
 
     /// Runs `cargo test` for `cargo` packaged with Rust.
     fn run(self, builder: &Builder<'_>) {
         let compiler = builder.compiler(self.stage, self.host);
 
-        builder.ensure(tool::Cargo {
+        builder.ensure(tool::Cargo { compiler, target: self.host });
+        let mut cargo = tool::prepare_tool_cargo(
+            builder,
             compiler,
-            target: self.host,
-        });
-        let mut cargo = tool::prepare_tool_cargo(builder,
-                                                 compiler,
-                                                 Mode::ToolRustc,
-                                                 self.host,
-                                                 "test",
-                                                 "src/tools/cargo",
-                                                 SourceType::Submodule,
-                                                 &[]);
+            Mode::ToolRustc,
+            self.host,
+            "test",
+            "src/tools/cargo",
+            SourceType::Submodule,
+            &[],
+        );
 
         if !builder.fail_fast {
             cargo.arg("--no-fail-fast");
@@ -254,10 +241,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Rls {
-            stage: run.builder.top_stage,
-            host: run.target,
-        });
+        run.builder.ensure(Rls { stage: run.builder.top_stage, host: run.target });
     }
 
     /// Runs `cargo test` for the rls.
@@ -266,28 +250,26 @@ fn run(self, builder: &Builder<'_>) {
         let host = self.host;
         let compiler = builder.compiler(stage, host);
 
-        let build_result = builder.ensure(tool::Rls {
-            compiler,
-            target: self.host,
-            extra_features: Vec::new(),
-        });
+        let build_result =
+            builder.ensure(tool::Rls { compiler, target: self.host, extra_features: Vec::new() });
         if build_result.is_none() {
             eprintln!("failed to test rls: could not build");
             return;
         }
 
-        let mut cargo = tool::prepare_tool_cargo(builder,
-                                                 compiler,
-                                                 Mode::ToolRustc,
-                                                 host,
-                                                 "test",
-                                                 "src/tools/rls",
-                                                 SourceType::Submodule,
-                                                 &[]);
+        let mut cargo = tool::prepare_tool_cargo(
+            builder,
+            compiler,
+            Mode::ToolRustc,
+            host,
+            "test",
+            "src/tools/rls",
+            SourceType::Submodule,
+            &[],
+        );
 
         builder.add_rustc_lib_path(compiler, &mut cargo);
-        cargo.arg("--")
-            .args(builder.config.cmd.test_args());
+        cargo.arg("--").args(builder.config.cmd.test_args());
 
         if try_run(builder, &mut cargo.into()) {
             builder.save_toolstate("rls", ToolState::TestPass);
@@ -310,10 +292,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Rustfmt {
-            stage: run.builder.top_stage,
-            host: run.target,
-        });
+        run.builder.ensure(Rustfmt { stage: run.builder.top_stage, host: run.target });
     }
 
     /// Runs `cargo test` for rustfmt.
@@ -332,14 +311,16 @@ fn run(self, builder: &Builder<'_>) {
             return;
         }
 
-        let mut cargo = tool::prepare_tool_cargo(builder,
-                                                 compiler,
-                                                 Mode::ToolRustc,
-                                                 host,
-                                                 "test",
-                                                 "src/tools/rustfmt",
-                                                 SourceType::Submodule,
-                                                 &[]);
+        let mut cargo = tool::prepare_tool_cargo(
+            builder,
+            compiler,
+            Mode::ToolRustc,
+            host,
+            "test",
+            "src/tools/rustfmt",
+            SourceType::Submodule,
+            &[],
+        );
 
         let dir = testdir(builder, compiler.host);
         t!(fs::create_dir_all(&dir));
@@ -368,10 +349,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Miri {
-            stage: run.builder.top_stage,
-            host: run.target,
-        });
+        run.builder.ensure(Miri { stage: run.builder.top_stage, host: run.target });
     }
 
     /// Runs `cargo test` for miri.
@@ -380,11 +358,8 @@ fn run(self, builder: &Builder<'_>) {
         let host = self.host;
         let compiler = builder.compiler(stage, host);
 
-        let miri = builder.ensure(tool::Miri {
-            compiler,
-            target: self.host,
-            extra_features: Vec::new(),
-        });
+        let miri =
+            builder.ensure(tool::Miri { compiler, target: self.host, extra_features: Vec::new() });
         if let Some(miri) = miri {
             let mut cargo = builder.cargo(compiler, Mode::ToolRustc, host, "install");
             cargo.arg("xargo");
@@ -407,16 +382,8 @@ fn run(self, builder: &Builder<'_>) {
                 SourceType::Submodule,
                 &[],
             );
-            cargo
-                .arg("--bin")
-                .arg("cargo-miri")
-                .arg("--")
-                .arg("miri")
-                .arg("setup");
-
-            // Tell `cargo miri` not to worry about the sysroot mismatch (we built with
-            // stage1 but run with stage2).
-            cargo.env("MIRI_SKIP_SYSROOT_CHECK", "1");
+            cargo.arg("--bin").arg("cargo-miri").arg("--").arg("miri").arg("setup");
+
             // Tell `cargo miri setup` where to find the sources.
             cargo.env("XARGO_RUST_SRC", builder.src.join("src"));
             // Debug things.
@@ -441,7 +408,8 @@ fn run(self, builder: &Builder<'_>) {
                 String::new()
             } else {
                 builder.verbose(&format!("running: {:?}", cargo));
-                let out = cargo.output()
+                let out = cargo
+                    .output()
                     .expect("We already ran `cargo miri setup` before and that worked");
                 assert!(out.status.success(), "`cargo miri setup` returned with non-0 exit code");
                 // Output is "<sysroot>\n".
@@ -497,9 +465,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(CompiletestTest {
-            host: run.target,
-        });
+        run.builder.ensure(CompiletestTest { host: run.target });
     }
 
     /// Runs `cargo test` for compiletest.
@@ -507,14 +473,16 @@ fn run(self, builder: &Builder<'_>) {
         let host = self.host;
         let compiler = builder.compiler(0, host);
 
-        let cargo = tool::prepare_tool_cargo(builder,
-                                             compiler,
-                                             Mode::ToolBootstrap,
-                                             host,
-                                             "test",
-                                             "src/tools/compiletest",
-                                             SourceType::InTree,
-                                             &[]);
+        let cargo = tool::prepare_tool_cargo(
+            builder,
+            compiler,
+            Mode::ToolBootstrap,
+            host,
+            "test",
+            "src/tools/compiletest",
+            SourceType::InTree,
+            &[],
+        );
 
         try_run(builder, &mut cargo.into());
     }
@@ -536,10 +504,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Clippy {
-            stage: run.builder.top_stage,
-            host: run.target,
-        });
+        run.builder.ensure(Clippy { stage: run.builder.top_stage, host: run.target });
     }
 
     /// Runs `cargo test` for clippy.
@@ -554,22 +519,22 @@ fn run(self, builder: &Builder<'_>) {
             extra_features: Vec::new(),
         });
         if let Some(clippy) = clippy {
-            let mut cargo = tool::prepare_tool_cargo(builder,
-                                                 compiler,
-                                                 Mode::ToolRustc,
-                                                 host,
-                                                 "test",
-                                                 "src/tools/clippy",
-                                                 SourceType::Submodule,
-                                                 &[]);
+            let mut cargo = tool::prepare_tool_cargo(
+                builder,
+                compiler,
+                Mode::ToolRustc,
+                host,
+                "test",
+                "src/tools/clippy",
+                SourceType::Submodule,
+                &[],
+            );
 
             // clippy tests need to know about the stage sysroot
             cargo.env("SYSROOT", builder.sysroot(compiler));
             cargo.env("RUSTC_TEST_SUITE", builder.rustc(compiler));
             cargo.env("RUSTC_LIB_PATH", builder.rustc_libdir(compiler));
-            let host_libs = builder
-                .stage_out(compiler, Mode::ToolRustc)
-                .join(builder.cargo_dir());
+            let host_libs = builder.stage_out(compiler, Mode::ToolRustc).join(builder.cargo_dir());
             let target_libs = builder
                 .stage_out(compiler, Mode::ToolRustc)
                 .join(&self.host)
@@ -623,19 +588,10 @@ fn run(self, builder: &Builder<'_>) {
         let rustdoc = builder.out.join("bootstrap/debug/rustdoc");
         let mut cmd = builder.tool_cmd(Tool::RustdocTheme);
         cmd.arg(rustdoc.to_str().unwrap())
-            .arg(
-                builder
-                    .src
-                    .join("src/librustdoc/html/static/themes")
-                    .to_str()
-                    .unwrap(),
-            )
+            .arg(builder.src.join("src/librustdoc/html/static/themes").to_str().unwrap())
             .env("RUSTC_STAGE", self.compiler.stage.to_string())
             .env("RUSTC_SYSROOT", builder.sysroot(self.compiler))
-            .env(
-                "RUSTDOC_LIBDIR",
-                builder.sysroot_libdir(self.compiler, self.compiler.host),
-            )
+            .env("RUSTDOC_LIBDIR", builder.sysroot_libdir(self.compiler, self.compiler.host))
             .env("CFG_RELEASE_CHANNEL", &builder.config.channel)
             .env("RUSTDOC_REAL", builder.rustdoc(self.compiler))
             .env("RUSTDOC_CRATE_VERSION", builder.rust_version())
@@ -663,25 +619,17 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(RustdocJSStd {
-            host: run.host,
-            target: run.target,
-        });
+        run.builder.ensure(RustdocJSStd { host: run.host, target: run.target });
     }
 
     fn run(self, builder: &Builder<'_>) {
         if let Some(ref nodejs) = builder.config.nodejs {
             let mut command = Command::new(nodejs);
             command.args(&["src/tools/rustdoc-js-std/tester.js", &*self.host]);
-            builder.ensure(crate::doc::Std {
-                target: self.target,
-                stage: builder.top_stage,
-            });
+            builder.ensure(crate::doc::Std { target: self.target, stage: builder.top_stage });
             builder.run(&mut command);
         } else {
-            builder.info(
-                "No nodejs found, skipping \"src/test/rustdoc-js-std\" tests"
-            );
+            builder.info("No nodejs found, skipping \"src/test/rustdoc-js-std\" tests");
         }
     }
 }
@@ -704,11 +652,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
 
     fn make_run(run: RunConfig<'_>) {
         let compiler = run.builder.compiler(run.builder.top_stage, run.host);
-        run.builder.ensure(RustdocJSNotStd {
-            host: run.host,
-            target: run.target,
-            compiler,
-        });
+        run.builder.ensure(RustdocJSNotStd { host: run.host, target: run.target, compiler });
     }
 
     fn run(self, builder: &Builder<'_>) {
@@ -722,9 +666,7 @@ fn run(self, builder: &Builder<'_>) {
                 compare_mode: None,
             });
         } else {
-            builder.info(
-                "No nodejs found, skipping \"src/test/rustdoc-js\" tests"
-            );
+            builder.info("No nodejs found, skipping \"src/test/rustdoc-js\" tests");
         }
     }
 }
@@ -747,11 +689,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
 
     fn make_run(run: RunConfig<'_>) {
         let compiler = run.builder.compiler(run.builder.top_stage, run.host);
-        run.builder.ensure(RustdocUi {
-            host: run.host,
-            target: run.target,
-            compiler,
-        });
+        run.builder.ensure(RustdocUi { host: run.host, target: run.target, compiler });
     }
 
     fn run(self, builder: &Builder<'_>) {
@@ -779,6 +717,9 @@ impl Step for Tidy {
     /// This tool in `src/tools` checks up on various bits and pieces of style and
     /// otherwise just implements a few lint-like checks that are specific to the
     /// compiler itself.
+    ///
+    /// Once tidy passes, this step also runs `fmt --check` if tests are being run
+    /// for the `dev` or `nightly` channels.
     fn run(self, builder: &Builder<'_>) {
         let mut cmd = builder.tool_cmd(Tool::Tidy);
         cmd.arg(builder.src.join("src"));
@@ -792,6 +733,11 @@ fn run(self, builder: &Builder<'_>) {
 
         builder.info("tidy check");
         try_run(builder, &mut cmd);
+
+        if builder.config.channel == "dev" || builder.config.channel == "nightly" {
+            builder.info("fmt check");
+            crate::format::format(&builder.build, !builder.config.cmd.bless());
+        }
     }
 
     fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
@@ -810,37 +756,55 @@ fn testdir(builder: &Builder<'_>, host: Interned<String>) -> PathBuf {
 macro_rules! default_test {
     ($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr }) => {
         test!($name { path: $path, mode: $mode, suite: $suite, default: true, host: false });
-    }
+    };
 }
 
 macro_rules! default_test_with_compare_mode {
     ($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr,
                    compare_mode: $compare_mode:expr }) => {
-        test_with_compare_mode!($name { path: $path, mode: $mode, suite: $suite, default: true,
-                                        host: false, compare_mode: $compare_mode });
-    }
+        test_with_compare_mode!($name {
+            path: $path,
+            mode: $mode,
+            suite: $suite,
+            default: true,
+            host: false,
+            compare_mode: $compare_mode
+        });
+    };
 }
 
 macro_rules! host_test {
     ($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr }) => {
         test!($name { path: $path, mode: $mode, suite: $suite, default: true, host: true });
-    }
+    };
 }
 
 macro_rules! test {
     ($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr, default: $default:expr,
                    host: $host:expr }) => {
-        test_definitions!($name { path: $path, mode: $mode, suite: $suite, default: $default,
-                                  host: $host, compare_mode: None });
-    }
+        test_definitions!($name {
+            path: $path,
+            mode: $mode,
+            suite: $suite,
+            default: $default,
+            host: $host,
+            compare_mode: None
+        });
+    };
 }
 
 macro_rules! test_with_compare_mode {
     ($name:ident { path: $path:expr, mode: $mode:expr, suite: $suite:expr, default: $default:expr,
                    host: $host:expr, compare_mode: $compare_mode:expr }) => {
-        test_definitions!($name { path: $path, mode: $mode, suite: $suite, default: $default,
-                                  host: $host, compare_mode: Some($compare_mode) });
-    }
+        test_definitions!($name {
+            path: $path,
+            mode: $mode,
+            suite: $suite,
+            default: $default,
+            host: $host,
+            compare_mode: Some($compare_mode)
+        });
+    };
 }
 
 macro_rules! test_definitions {
@@ -870,10 +834,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
             fn make_run(run: RunConfig<'_>) {
                 let compiler = run.builder.compiler(run.builder.top_stage, run.host);
 
-                run.builder.ensure($name {
-                    compiler,
-                    target: run.target,
-                });
+                run.builder.ensure($name { compiler, target: run.target });
             }
 
             fn run(self, builder: &Builder<'_>) {
@@ -887,7 +848,7 @@ fn run(self, builder: &Builder<'_>) {
                 })
             }
         }
-    }
+    };
 }
 
 default_test_with_compare_mode!(Ui {
@@ -903,11 +864,7 @@ fn run(self, builder: &Builder<'_>) {
     suite: "compile-fail"
 });
 
-default_test!(RunFail {
-    path: "src/test/run-fail",
-    mode: "run-fail",
-    suite: "run-fail"
-});
+default_test!(RunFail { path: "src/test/run-fail", mode: "run-fail", suite: "run-fail" });
 
 default_test!(RunPassValgrind {
     path: "src/test/run-pass-valgrind",
@@ -915,17 +872,9 @@ fn run(self, builder: &Builder<'_>) {
     suite: "run-pass-valgrind"
 });
 
-default_test!(MirOpt {
-    path: "src/test/mir-opt",
-    mode: "mir-opt",
-    suite: "mir-opt"
-});
+default_test!(MirOpt { path: "src/test/mir-opt", mode: "mir-opt", suite: "mir-opt" });
 
-default_test!(Codegen {
-    path: "src/test/codegen",
-    mode: "codegen",
-    suite: "codegen"
-});
+default_test!(Codegen { path: "src/test/codegen", mode: "codegen", suite: "codegen" });
 
 default_test!(CodegenUnits {
     path: "src/test/codegen-units",
@@ -939,29 +888,13 @@ fn run(self, builder: &Builder<'_>) {
     suite: "incremental"
 });
 
-default_test!(Debuginfo {
-    path: "src/test/debuginfo",
-    mode: "debuginfo",
-    suite: "debuginfo"
-});
+default_test!(Debuginfo { path: "src/test/debuginfo", mode: "debuginfo", suite: "debuginfo" });
 
-host_test!(UiFullDeps {
-    path: "src/test/ui-fulldeps",
-    mode: "ui",
-    suite: "ui-fulldeps"
-});
+host_test!(UiFullDeps { path: "src/test/ui-fulldeps", mode: "ui", suite: "ui-fulldeps" });
 
-host_test!(Rustdoc {
-    path: "src/test/rustdoc",
-    mode: "rustdoc",
-    suite: "rustdoc"
-});
+host_test!(Rustdoc { path: "src/test/rustdoc", mode: "rustdoc", suite: "rustdoc" });
 
-host_test!(Pretty {
-    path: "src/test/pretty",
-    mode: "pretty",
-    suite: "pretty"
-});
+host_test!(Pretty { path: "src/test/pretty", mode: "pretty", suite: "pretty" });
 test!(RunFailPretty {
     path: "src/test/run-fail/pretty",
     mode: "pretty",
@@ -977,11 +910,7 @@ fn run(self, builder: &Builder<'_>) {
     host: true
 });
 
-default_test!(RunMake {
-    path: "src/test/run-make",
-    mode: "run-make",
-    suite: "run-make"
-});
+default_test!(RunMake { path: "src/test/run-make", mode: "run-make", suite: "run-make" });
 
 host_test!(RunMakeFullDeps {
     path: "src/test/run-make-fulldeps",
@@ -989,11 +918,7 @@ fn run(self, builder: &Builder<'_>) {
     suite: "run-make-fulldeps"
 });
 
-default_test!(Assembly {
-    path: "src/test/assembly",
-    mode: "assembly",
-    suite: "assembly"
-});
+default_test!(Assembly { path: "src/test/assembly", mode: "assembly", suite: "assembly" });
 
 #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
 struct Compiletest {
@@ -1040,10 +965,8 @@ fn run(self, builder: &Builder<'_>) {
                 });
             }
 
-            builder.ensure(dist::DebuggerScripts {
-                sysroot: builder.sysroot(compiler),
-                host: target,
-            });
+            builder
+                .ensure(dist::DebuggerScripts { sysroot: builder.sysroot(compiler), host: target });
         }
 
         if suite.ends_with("fulldeps") {
@@ -1069,10 +992,8 @@ fn run(self, builder: &Builder<'_>) {
         // compiletest currently has... a lot of arguments, so let's just pass all
         // of them!
 
-        cmd.arg("--compile-lib-path")
-            .arg(builder.rustc_libdir(compiler));
-        cmd.arg("--run-lib-path")
-            .arg(builder.sysroot_libdir(compiler, target));
+        cmd.arg("--compile-lib-path").arg(builder.rustc_libdir(compiler));
+        cmd.arg("--run-lib-path").arg(builder.sysroot_libdir(compiler, target));
         cmd.arg("--rustc-path").arg(builder.rustc(compiler));
 
         let is_rustdoc = suite.ends_with("rustdoc-ui") || suite.ends_with("rustdoc-js");
@@ -1083,33 +1004,25 @@ fn run(self, builder: &Builder<'_>) {
             || (mode == "ui" && is_rustdoc)
             || mode == "js-doc-test"
         {
-            cmd.arg("--rustdoc-path")
-                .arg(builder.rustdoc(compiler));
+            cmd.arg("--rustdoc-path").arg(builder.rustdoc(compiler));
         }
 
-        cmd.arg("--src-base")
-            .arg(builder.src.join("src/test").join(suite));
-        cmd.arg("--build-base")
-            .arg(testdir(builder, compiler.host).join(suite));
-        cmd.arg("--stage-id")
-            .arg(format!("stage{}-{}", compiler.stage, target));
+        cmd.arg("--src-base").arg(builder.src.join("src/test").join(suite));
+        cmd.arg("--build-base").arg(testdir(builder, compiler.host).join(suite));
+        cmd.arg("--stage-id").arg(format!("stage{}-{}", compiler.stage, target));
         cmd.arg("--mode").arg(mode);
         cmd.arg("--target").arg(target);
         cmd.arg("--host").arg(&*compiler.host);
-        cmd.arg("--llvm-filecheck")
-            .arg(builder.llvm_filecheck(builder.config.build));
+        cmd.arg("--llvm-filecheck").arg(builder.llvm_filecheck(builder.config.build));
 
         if builder.config.cmd.bless() {
             cmd.arg("--bless");
         }
 
-        let compare_mode = builder.config.cmd.compare_mode().or_else(|| {
-            if builder.config.test_compare_mode {
-                self.compare_mode
-            } else {
-                None
-            }
-        });
+        let compare_mode =
+            builder.config.cmd.compare_mode().or_else(|| {
+                if builder.config.test_compare_mode { self.compare_mode } else { None }
+            });
 
         if let Some(ref pass) = builder.config.cmd.pass() {
             cmd.arg("--pass");
@@ -1120,11 +1033,7 @@ fn run(self, builder: &Builder<'_>) {
             cmd.arg("--nodejs").arg(nodejs);
         }
 
-        let mut flags = if is_rustdoc {
-            Vec::new()
-        } else {
-            vec!["-Crpath".to_string()]
-        };
+        let mut flags = if is_rustdoc { Vec::new() } else { vec!["-Crpath".to_string()] };
         if !is_rustdoc {
             if builder.config.rust_optimize_tests {
                 flags.push("-O".to_string());
@@ -1139,17 +1048,11 @@ fn run(self, builder: &Builder<'_>) {
         }
 
         let mut hostflags = flags.clone();
-        hostflags.push(format!(
-            "-Lnative={}",
-            builder.test_helpers_out(compiler.host).display()
-        ));
+        hostflags.push(format!("-Lnative={}", builder.test_helpers_out(compiler.host).display()));
         cmd.arg("--host-rustcflags").arg(hostflags.join(" "));
 
         let mut targetflags = flags;
-        targetflags.push(format!(
-            "-Lnative={}",
-            builder.test_helpers_out(target).display()
-        ));
+        targetflags.push(format!("-Lnative={}", builder.test_helpers_out(target).display()));
         cmd.arg("--target-rustcflags").arg(targetflags.join(" "));
 
         cmd.arg("--docck-python").arg(builder.python());
@@ -1170,9 +1073,10 @@ fn run(self, builder: &Builder<'_>) {
         let run = |cmd: &mut Command| {
             cmd.output().map(|output| {
                 String::from_utf8_lossy(&output.stdout)
-                    .lines().next().unwrap_or_else(|| {
-                        panic!("{:?} failed {:?}", cmd, output)
-                    }).to_string()
+                    .lines()
+                    .next()
+                    .unwrap_or_else(|| panic!("{:?} failed {:?}", cmd, output))
+                    .to_string()
             })
         };
         let lldb_exe = if builder.config.lldb_enabled {
@@ -1184,7 +1088,7 @@ fn run(self, builder: &Builder<'_>) {
         let lldb_version = Command::new(&lldb_exe)
             .arg("--version")
             .output()
-            .map(|output| { String::from_utf8_lossy(&output.stdout).to_string() })
+            .map(|output| String::from_utf8_lossy(&output.stdout).to_string())
             .ok();
         if let Some(ref vers) = lldb_version {
             cmd.arg("--lldb-version").arg(vers);
@@ -1208,11 +1112,9 @@ fn run(self, builder: &Builder<'_>) {
         // Get test-args by striping suite path
         let mut test_args: Vec<&str> = paths
             .iter()
-            .map(|p| {
-                match p.strip_prefix(".") {
-                    Ok(path) => path,
-                    Err(_) => p,
-                }
+            .map(|p| match p.strip_prefix(".") {
+                Ok(path) => path,
+                Err(_) => p,
             })
             .filter(|p| p.starts_with(suite_path) && (p.is_dir() || p.is_file()))
             .filter_map(|p| {
@@ -1242,9 +1144,7 @@ fn run(self, builder: &Builder<'_>) {
         }
 
         if builder.config.llvm_enabled() {
-            let llvm_config = builder.ensure(native::Llvm {
-                target: builder.config.build,
-            });
+            let llvm_config = builder.ensure(native::Llvm { target: builder.config.build });
             if !builder.config.dry_run {
                 let llvm_version = output(Command::new(&llvm_config).arg("--version"));
                 cmd.arg("--llvm-version").arg(llvm_version);
@@ -1274,23 +1174,24 @@ fn run(self, builder: &Builder<'_>) {
 
                 // The llvm/bin directory contains many useful cross-platform
                 // tools. Pass the path to run-make tests so they can use them.
-                let llvm_bin_path = llvm_config.parent()
+                let llvm_bin_path = llvm_config
+                    .parent()
                     .expect("Expected llvm-config to be contained in directory");
                 assert!(llvm_bin_path.is_dir());
                 cmd.arg("--llvm-bin-dir").arg(llvm_bin_path);
 
                 // If LLD is available, add it to the PATH
                 if builder.config.lld_enabled {
-                    let lld_install_root = builder.ensure(native::Lld {
-                        target: builder.config.build,
-                    });
+                    let lld_install_root =
+                        builder.ensure(native::Lld { target: builder.config.build });
 
                     let lld_bin_path = lld_install_root.join("bin");
 
                     let old_path = env::var_os("PATH").unwrap_or_default();
-                    let new_path = env::join_paths(std::iter::once(lld_bin_path)
-                        .chain(env::split_paths(&old_path)))
-                        .expect("Could not add LLD bin path to PATH");
+                    let new_path = env::join_paths(
+                        std::iter::once(lld_bin_path).chain(env::split_paths(&old_path)),
+                    )
+                    .expect("Could not add LLD bin path to PATH");
                     cmd.env("PATH", new_path);
                 }
             }
@@ -1310,8 +1211,7 @@ fn run(self, builder: &Builder<'_>) {
         }
 
         if builder.remote_tested(target) {
-            cmd.arg("--remote-test-client")
-                .arg(builder.tool_exe(Tool::RemoteTestClient));
+            cmd.arg("--remote-test-client").arg(builder.tool_exe(Tool::RemoteTestClient));
         }
 
         // Running a C compiler on MSVC requires a few env vars to be set, to be
@@ -1341,7 +1241,6 @@ fn run(self, builder: &Builder<'_>) {
         std::fs::create_dir_all(&tmp).unwrap();
         cmd.env("RUST_TEST_TMPDIR", tmp);
 
-
         cmd.arg("--adb-path").arg("adb");
         cmd.arg("--adb-test-dir").arg(ADB_TEST_DIR);
         if target.contains("android") {
@@ -1401,10 +1300,7 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     fn run(self, builder: &Builder<'_>) {
         let compiler = self.compiler;
 
-        builder.ensure(compile::Std {
-            compiler,
-            target: compiler.host,
-        });
+        builder.ensure(compile::Std { compiler, target: compiler.host });
 
         // Do a breadth-first traversal of the `src/doc` directory and just run
         // tests for all files that end in `*.md`
@@ -1508,9 +1404,8 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(ErrorIndex {
-            compiler: run.builder.compiler(run.builder.top_stage, run.host),
-        });
+        run.builder
+            .ensure(ErrorIndex { compiler: run.builder.compiler(run.builder.top_stage, run.host) });
     }
 
     /// Runs the error index generator tool to execute the tests located in the error
@@ -1522,10 +1417,7 @@ fn make_run(run: RunConfig<'_>) {
     fn run(self, builder: &Builder<'_>) {
         let compiler = self.compiler;
 
-        builder.ensure(compile::Std {
-            compiler,
-            target: compiler.host,
-        });
+        builder.ensure(compile::Std { compiler, target: compiler.host });
 
         let dir = testdir(builder, compiler.host);
         t!(fs::create_dir_all(&dir));
@@ -1535,9 +1427,7 @@ fn run(self, builder: &Builder<'_>) {
             builder,
             builder.compiler(compiler.stage, builder.config.build),
         );
-        tool.arg("markdown")
-            .arg(&output)
-            .env("CFG_BUILD", &builder.config.build);
+        tool.arg("markdown").arg(&output).env("CFG_BUILD", &builder.config.build);
 
         builder.info(&format!("Testing error-index stage{}", compiler.stage));
         let _time = util::timeit(&builder);
@@ -1769,7 +1659,7 @@ fn run(self, builder: &Builder<'_>) {
         let mut cargo = builder.cargo(compiler, mode, target, test_kind.subcommand());
         match mode {
             Mode::Std => {
-                compile::std_cargo(builder, &compiler, target, &mut cargo);
+                compile::std_cargo(builder, target, &mut cargo);
             }
             Mode::Rustc => {
                 builder.ensure(compile::Rustc { compiler, target });
@@ -1817,23 +1707,12 @@ fn run(self, builder: &Builder<'_>) {
         if target.contains("emscripten") {
             cargo.env(
                 format!("CARGO_TARGET_{}_RUNNER", envify(&target)),
-                builder
-                    .config
-                    .nodejs
-                    .as_ref()
-                    .expect("nodejs not configured"),
+                builder.config.nodejs.as_ref().expect("nodejs not configured"),
             );
         } else if target.starts_with("wasm32") {
-            let node = builder
-                .config
-                .nodejs
-                .as_ref()
-                .expect("nodejs not configured");
-            let runner = format!(
-                "{} {}/src/etc/wasm32-shim.js",
-                node.display(),
-                builder.src.display()
-            );
+            let node = builder.config.nodejs.as_ref().expect("nodejs not configured");
+            let runner =
+                format!("{} {}/src/etc/wasm32-shim.js", node.display(), builder.src.display());
             cargo.env(format!("CARGO_TARGET_{}_RUNNER", envify(&target)), &runner);
         } else if builder.remote_tested(target) {
             cargo.env(
@@ -1871,10 +1750,7 @@ fn make_run(run: RunConfig<'_>) {
 
         let test_kind = builder.kind.into();
 
-        builder.ensure(CrateRustdoc {
-            host: run.host,
-            test_kind,
-        });
+        builder.ensure(CrateRustdoc { host: run.host, test_kind });
     }
 
     fn run(self, builder: &Builder<'_>) {
@@ -1884,14 +1760,16 @@ fn run(self, builder: &Builder<'_>) {
         let target = compiler.host;
         builder.ensure(compile::Rustc { compiler, target });
 
-        let mut cargo = tool::prepare_tool_cargo(builder,
-                                                 compiler,
-                                                 Mode::ToolRustc,
-                                                 target,
-                                                 test_kind.subcommand(),
-                                                 "src/tools/rustdoc",
-                                                 SourceType::InTree,
-                                                 &[]);
+        let mut cargo = tool::prepare_tool_cargo(
+            builder,
+            compiler,
+            Mode::ToolRustc,
+            target,
+            test_kind.subcommand(),
+            "src/tools/rustdoc",
+            SourceType::InTree,
+            &[],
+        );
         if test_kind.subcommand() == "test" && !builder.fail_fast {
             cargo.arg("--no-fail-fast");
         }
@@ -1953,18 +1831,13 @@ fn run(self, builder: &Builder<'_>) {
         builder.info(&format!("REMOTE copy libs to emulator ({})", target));
         t!(fs::create_dir_all(builder.out.join("tmp")));
 
-        let server = builder.ensure(tool::RemoteTestServer {
-            compiler: compiler.with_stage(0),
-            target,
-        });
+        let server =
+            builder.ensure(tool::RemoteTestServer { compiler: compiler.with_stage(0), target });
 
         // Spawn the emulator and wait for it to come online
         let tool = builder.tool_exe(Tool::RemoteTestClient);
         let mut cmd = Command::new(&tool);
-        cmd.arg("spawn-emulator")
-            .arg(target)
-            .arg(&server)
-            .arg(builder.out.join("tmp"));
+        cmd.arg("spawn-emulator").arg(target).arg(&server).arg(builder.out.join("tmp"));
         if let Some(rootfs) = builder.qemu_rootfs(target) {
             cmd.arg(rootfs);
         }
@@ -2019,9 +1892,7 @@ fn run(self, builder: &Builder<'_>) {
                 .current_dir(&dir),
         );
         builder.run(
-            Command::new(build_helper::make(&builder.config.build))
-                .arg("check")
-                .current_dir(&dir),
+            Command::new(build_helper::make(&builder.config.build)).arg("check").current_dir(&dir),
         );
 
         // Now make sure that rust-src has all of libstd's dependencies