Skip to content

Commit e148667

Browse files
majaharami3l
authored andcommitted
Make rustup default not error if no default
`rustup default` will no longer error and print to stderr if there is no default toolchain configured. It will print to stdout and exit successfully instead.
1 parent 5373d93 commit e148667

File tree

4 files changed

+17
-12
lines changed

4 files changed

+17
-12
lines changed

src/cli/rustup_mode.rs

+9-4
Original file line numberDiff line numberDiff line change
@@ -872,10 +872,15 @@ fn default_(cfg: &Cfg, m: &ArgMatches) -> Result<utils::ExitCode> {
872872
}
873873
}
874874
} else {
875-
let default_toolchain = cfg
876-
.get_default()?
877-
.ok_or_else(|| anyhow!("no default toolchain configured"))?;
878-
writeln!(process().stdout().lock(), "{default_toolchain} (default)")?;
875+
match cfg.get_default()? {
876+
Some(default_toolchain) => {
877+
writeln!(process().stdout().lock(), "{default_toolchain} (default)")?;
878+
}
879+
None => writeln!(
880+
process().stdout().lock(),
881+
"no default toolchain is configured"
882+
)?,
883+
}
879884
}
880885

881886
Ok(utils::ExitCode(0))

tests/suite/cli_exact.rs

+7
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,13 @@ fn default_none() {
577577
&["rustup", "default", "none"],
578578
"info: default toolchain unset",
579579
);
580+
581+
config.expect_ok_ex(
582+
&["rustup", "default"],
583+
"no default toolchain is configured\n",
584+
"",
585+
);
586+
580587
config.expect_err_ex(
581588
&["rustc", "--version"],
582589
"",

tests/suite/cli_misc.rs

-7
Original file line numberDiff line numberDiff line change
@@ -477,13 +477,6 @@ fn toolchains_are_resolved_early() {
477477
});
478478
}
479479

480-
#[test]
481-
fn no_panic_on_default_toolchain_missing() {
482-
setup(&|config| {
483-
config.expect_err(&["rustup", "default"], "no default toolchain configured");
484-
});
485-
}
486-
487480
// #190
488481
#[test]
489482
fn proxies_pass_empty_args() {

tests/suite/cli_rustup.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2482,7 +2482,7 @@ fn check_unix_settings_fallback() {
24822482
test(&|config| {
24832483
config.with_scenario(Scenario::SimpleV2, &|config| {
24842484
// No default toolchain specified yet
2485-
config.expect_err(&["rustup", "default"], r"no default toolchain configured");
2485+
config.expect_stdout_ok(&["rustup", "default"], "no default toolchain is configured");
24862486

24872487
// Default toolchain specified in fallback settings file
24882488
let mock_settings_file = config.current_dir().join("mock_fallback_settings.toml");

0 commit comments

Comments
 (0)