@@ -551,7 +551,7 @@ fn remove_component() {
551
551
// Run without setting RUSTUP_HOME, with setting HOME and USERPROFILE
552
552
fn run_no_home ( config : & Config , args : & [ & str ] , env : & [ ( & str , & str ) ] ) -> process:: Output {
553
553
let home_dir_str = & format ! ( "{}" , config. homedir. display( ) ) ;
554
- let mut cmd = clitools:: cmd ( config, "rustup" , args) ;
554
+ let mut cmd = clitools:: cmd ( config, args [ 0 ] , & args[ 1 .. ] ) ;
555
555
clitools:: env ( config, & mut cmd) ;
556
556
cmd. env_remove ( "RUSTUP_HOME" ) ;
557
557
cmd. env ( "HOME" , home_dir_str) ;
@@ -574,9 +574,9 @@ fn multirust_dir_upgrade_rename_multirust_dir_to_rustup() {
574
574
let multirust_dir_str = & format ! ( "{}" , multirust_dir. display( ) ) ;
575
575
576
576
// First write data into ~/.multirust
577
- run_no_home ( config, & [ "default" , "stable" ] ,
577
+ run_no_home ( config, & [ "rustup" , " default", "stable" ] ,
578
578
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
579
- let out = run_no_home ( config, & [ "toolchain" , "list" ] ,
579
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] ,
580
580
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
581
581
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
582
582
@@ -586,10 +586,11 @@ fn multirust_dir_upgrade_rename_multirust_dir_to_rustup() {
586
586
// Next run without RUSTUP_DIR, but with HOME/USERPROFILE set so rustup
587
587
// can infer RUSTUP_DIR. It will silently move ~/.multirust to
588
588
// ~/.rustup.
589
- let out = run_no_home ( config, & [ "toolchain" , "list" ] , & [ ] ) ;
589
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] , & [ ] ) ;
590
590
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
591
591
592
- assert ! ( !multirust_dir. exists( ) ) ;
592
+ assert ! ( multirust_dir. exists( ) ) ;
593
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
593
594
assert ! ( rustup_dir. exists( ) ) ;
594
595
} ) ;
595
596
}
@@ -607,9 +608,9 @@ fn multirust_dir_upgrade_old_rustup_exists() {
607
608
let new_rustup_sh_version_file = rustup_sh_dir. join ( "rustup-version" ) ;
608
609
609
610
// First write data into ~/.multirust
610
- run_no_home ( config, & [ "default" , "stable" ] ,
611
+ run_no_home ( config, & [ "rustup" , " default", "stable" ] ,
611
612
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
612
- let out = run_no_home ( config, & [ "toolchain" , "list" ] ,
613
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] ,
613
614
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
614
615
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
615
616
@@ -622,10 +623,11 @@ fn multirust_dir_upgrade_old_rustup_exists() {
622
623
assert ! ( old_rustup_sh_version_file. exists( ) ) ;
623
624
624
625
// Now do the upgrade, and ~/.rustup will be moved to ~/.rustup.sh
625
- let out = run_no_home ( config, & [ "toolchain" , "list" ] , & [ ] ) ;
626
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] , & [ ] ) ;
626
627
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
627
628
628
- assert ! ( !multirust_dir. exists( ) ) ;
629
+ assert ! ( multirust_dir. exists( ) ) ;
630
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
629
631
assert ! ( rustup_dir. exists( ) ) ;
630
632
assert ! ( !old_rustup_sh_version_file. exists( ) ) ;
631
633
assert ! ( new_rustup_sh_version_file. exists( ) ) ;
@@ -646,9 +648,9 @@ fn multirust_dir_upgrade_old_rustup_existsand_new_rustup_sh_exists() {
646
648
let new_rustup_sh_version_file = rustup_sh_dir. join ( "rustup-version" ) ;
647
649
648
650
// First write data into ~/.multirust
649
- run_no_home ( config, & [ "default" , "stable" ] ,
651
+ run_no_home ( config, & [ "rustup" , " default", "stable" ] ,
650
652
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
651
- let out = run_no_home ( config, & [ "toolchain" , "list" ] ,
653
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] ,
652
654
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
653
655
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
654
656
@@ -670,12 +672,33 @@ fn multirust_dir_upgrade_old_rustup_existsand_new_rustup_sh_exists() {
670
672
assert ! ( new_rustup_sh_version_file. exists( ) ) ;
671
673
672
674
// Now do the upgrade, and ~/.rustup will be moved to ~/.rustup.sh
673
- let out = run_no_home ( config, & [ "toolchain" , "list" ] , & [ ] ) ;
675
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] , & [ ] ) ;
674
676
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
675
677
676
- assert ! ( !multirust_dir. exists( ) ) ;
678
+ // .multirust is now a symlink to .rustup
679
+ assert ! ( multirust_dir. exists( ) ) ;
680
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
681
+
677
682
assert ! ( rustup_dir. exists( ) ) ;
678
683
assert ! ( !old_rustup_sh_version_file. exists( ) ) ;
679
684
assert ! ( new_rustup_sh_version_file. exists( ) ) ;
680
685
} ) ;
681
686
}
687
+
688
+ #[ test]
689
+ fn multirust_upgrade_works_with_proxy ( ) {
690
+ setup ( & |config| {
691
+ let multirust_dir = config. homedir . join ( ".multirust" ) ;
692
+ let rustup_dir = config. homedir . join ( ".rustup" ) ;
693
+
694
+ // Put data in ~/.multirust
695
+ run_no_home ( config, & [ "rustup" , "default" , "stable" ] ,
696
+ & [ ( "RUSTUP_HOME" , & format ! ( "{}" , multirust_dir. display( ) ) ) ] ) ;
697
+
698
+ run_no_home ( config, & [ "rustc" , "--version" ] , & [ ] ) ;
699
+
700
+ assert ! ( multirust_dir. exists( ) ) ;
701
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
702
+ assert ! ( rustup_dir. exists( ) ) ;
703
+ } ) ;
704
+ }
0 commit comments