File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -384,12 +384,26 @@ impl<'a> Cfg<'a> {
384384 return Ok ( false ) ;
385385 }
386386
387- if let Ok ( mode) = self . process . var ( "RUSTUP_AUTO_INSTALL" ) {
388- Ok ( mode != "0" )
389- } else {
390- self . settings_file
391- . with ( |s| Ok ( s. auto_install != Some ( AutoInstallMode :: Disable ) ) )
387+ let should_auto = match self . process . var ( "RUSTUP_AUTO_INSTALL" ) {
388+ Ok ( mode) => mode != "0" ,
389+ Err ( _) => self
390+ . settings_file
391+ . with ( |s| Ok ( s. auto_install != Some ( AutoInstallMode :: Disable ) ) ) ?,
392+ } ;
393+ if !should_auto {
394+ return Ok ( false ) ;
392395 }
396+
397+ // We also need to suppress this warning if we're deep inside a recursive call.
398+ let recursions = self . process . var ( "RUST_RECURSION_COUNT" ) ;
399+ if recursions. is_ok_and ( |it| it != "0" ) {
400+ return Ok ( true ) ;
401+ }
402+
403+ warn ! ( "auto-install is enabled, active toolchain will be installed if absent" ) ;
404+ warn ! ( "this might cause rustup commands to take longer time to finish than expected" ) ;
405+ info ! ( "you may opt out with `RUSTUP_AUTO_INSTALL=0` or `rustup set auto-install disable`" ) ;
406+ Ok ( true )
393407 }
394408
395409 // Returns a profile, if one exists in the settings file.
Original file line number Diff line number Diff line change @@ -1749,3 +1749,30 @@ info: falling back to "[EXTERN_PATH]"
17491749"# ] ] )
17501750 . is_ok ( ) ;
17511751}
1752+
1753+ #[ tokio:: test]
1754+ async fn warn_auto_install ( ) {
1755+ let cx = CliTestContext :: new ( Scenario :: SimpleV2 ) . await ;
1756+ cx. config
1757+ . expect_with_env (
1758+ [ "rustc" , "--version" ] ,
1759+ [
1760+ ( "RUSTUP_TOOLCHAIN" , "stable" ) ,
1761+ ( "RUSTUP_AUTO_INSTALL" , "1" ) ,
1762+ ( "RUST_RECURSION_COUNT" , "" ) ,
1763+ ] ,
1764+ )
1765+ . await
1766+ . with_stdout ( snapbox:: str![ [ r#"
1767+ 1.1.0 (hash-stable-1.1.0)
1768+
1769+ "# ] ] )
1770+ . with_stderr ( snapbox:: str![ [ r#"
1771+ ...
1772+ warn: auto-install is enabled, active toolchain will be installed if absent
1773+ warn: this might cause rustup commands to take longer time to finish than expected
1774+ info: you may opt out with `RUSTUP_AUTO_INSTALL=0` or `rustup set auto-install disable`
1775+ ...
1776+ "# ] ] )
1777+ . is_ok ( ) ;
1778+ }
You can’t perform that action at this time.
0 commit comments