From d6de60fb322828ec3b828278f05598f2db282142 Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Mon, 15 Mar 2021 17:37:06 -0400 Subject: [PATCH] Make bootstrap be more informative when one does `x.py test` on a beta checkout without other mods. To be clear, by default running `x.py test` on a checkout of the beta branch currently fails, and with this change will continue to fail, because `x.py tests` runs `x.py test src/tools/tidy` which tries to run `rustfmt` and that will fail because the `rustfmt` binary is pinned to the current nighlty and we do not attempt to distribute one for the beta builds. This change gives a better error message than the current message, which is just "./x.py fmt is not supported on this channel" without providing any hint about what one might do about that problem. (update: placated tidy.) --- src/bootstrap/test.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 5d836c6bb62..86d940cd733 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -791,6 +791,19 @@ fn run(self, builder: &Builder<'_>) { if builder.config.channel == "dev" || builder.config.channel == "nightly" { builder.info("fmt check"); + if builder.config.initial_rustfmt.is_none() { + let inferred_rustfmt_dir = builder.config.initial_rustc.parent().unwrap(); + eprintln!( + "\ +error: no `rustfmt` binary found in {PATH} +info: `rust.channel` is currently set to \"{CHAN}\" +help: if you are testing a beta branch, set `rust.channel` to \"beta\" in the `config.toml` file +help: to skip test's attempt to check tidiness, pass `--exclude src/tools/tidy` to `x.py test`", + PATH = inferred_rustfmt_dir.display(), + CHAN = builder.config.channel, + ); + std::process::exit(1); + } crate::format::format(&builder.build, !builder.config.cmd.bless()); } }