@@ -589,7 +589,7 @@ fn remove_component() {
589
589
// Run without setting RUSTUP_HOME, with setting HOME and USERPROFILE
590
590
fn run_no_home ( config : & Config , args : & [ & str ] , env : & [ ( & str , & str ) ] ) -> process:: Output {
591
591
let home_dir_str = & format ! ( "{}" , config. homedir. display( ) ) ;
592
- let mut cmd = clitools:: cmd ( config, "rustup" , args) ;
592
+ let mut cmd = clitools:: cmd ( config, args [ 0 ] , & args[ 1 .. ] ) ;
593
593
clitools:: env ( config, & mut cmd) ;
594
594
cmd. env_remove ( "RUSTUP_HOME" ) ;
595
595
cmd. env ( "HOME" , home_dir_str) ;
@@ -612,9 +612,9 @@ fn multirust_dir_upgrade_rename_multirust_dir_to_rustup() {
612
612
let multirust_dir_str = & format ! ( "{}" , multirust_dir. display( ) ) ;
613
613
614
614
// First write data into ~/.multirust
615
- run_no_home ( config, & [ "default" , "stable" ] ,
615
+ run_no_home ( config, & [ "rustup" , " default", "stable" ] ,
616
616
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
617
- let out = run_no_home ( config, & [ "toolchain" , "list" ] ,
617
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] ,
618
618
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
619
619
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
620
620
@@ -624,10 +624,11 @@ fn multirust_dir_upgrade_rename_multirust_dir_to_rustup() {
624
624
// Next run without RUSTUP_DIR, but with HOME/USERPROFILE set so rustup
625
625
// can infer RUSTUP_DIR. It will silently move ~/.multirust to
626
626
// ~/.rustup.
627
- let out = run_no_home ( config, & [ "toolchain" , "list" ] , & [ ] ) ;
627
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] , & [ ] ) ;
628
628
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
629
629
630
- assert ! ( !multirust_dir. exists( ) ) ;
630
+ assert ! ( multirust_dir. exists( ) ) ;
631
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
631
632
assert ! ( rustup_dir. exists( ) ) ;
632
633
} ) ;
633
634
}
@@ -645,9 +646,9 @@ fn multirust_dir_upgrade_old_rustup_exists() {
645
646
let new_rustup_sh_version_file = rustup_sh_dir. join ( "rustup-version" ) ;
646
647
647
648
// First write data into ~/.multirust
648
- run_no_home ( config, & [ "default" , "stable" ] ,
649
+ run_no_home ( config, & [ "rustup" , " default", "stable" ] ,
649
650
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
650
- let out = run_no_home ( config, & [ "toolchain" , "list" ] ,
651
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] ,
651
652
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
652
653
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
653
654
@@ -660,10 +661,11 @@ fn multirust_dir_upgrade_old_rustup_exists() {
660
661
assert ! ( old_rustup_sh_version_file. exists( ) ) ;
661
662
662
663
// Now do the upgrade, and ~/.rustup will be moved to ~/.rustup.sh
663
- let out = run_no_home ( config, & [ "toolchain" , "list" ] , & [ ] ) ;
664
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] , & [ ] ) ;
664
665
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
665
666
666
- assert ! ( !multirust_dir. exists( ) ) ;
667
+ assert ! ( multirust_dir. exists( ) ) ;
668
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
667
669
assert ! ( rustup_dir. exists( ) ) ;
668
670
assert ! ( !old_rustup_sh_version_file. exists( ) ) ;
669
671
assert ! ( new_rustup_sh_version_file. exists( ) ) ;
@@ -684,9 +686,9 @@ fn multirust_dir_upgrade_old_rustup_existsand_new_rustup_sh_exists() {
684
686
let new_rustup_sh_version_file = rustup_sh_dir. join ( "rustup-version" ) ;
685
687
686
688
// First write data into ~/.multirust
687
- run_no_home ( config, & [ "default" , "stable" ] ,
689
+ run_no_home ( config, & [ "rustup" , " default", "stable" ] ,
688
690
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
689
- let out = run_no_home ( config, & [ "toolchain" , "list" ] ,
691
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] ,
690
692
& [ ( "RUSTUP_HOME" , multirust_dir_str) ] ) ;
691
693
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
692
694
@@ -708,12 +710,33 @@ fn multirust_dir_upgrade_old_rustup_existsand_new_rustup_sh_exists() {
708
710
assert ! ( new_rustup_sh_version_file. exists( ) ) ;
709
711
710
712
// Now do the upgrade, and ~/.rustup will be moved to ~/.rustup.sh
711
- let out = run_no_home ( config, & [ "toolchain" , "list" ] , & [ ] ) ;
713
+ let out = run_no_home ( config, & [ "rustup" , " toolchain", "list" ] , & [ ] ) ;
712
714
assert ! ( String :: from_utf8( out. stdout) . unwrap( ) . contains( "stable" ) ) ;
713
715
714
- assert ! ( !multirust_dir. exists( ) ) ;
716
+ // .multirust is now a symlink to .rustup
717
+ assert ! ( multirust_dir. exists( ) ) ;
718
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
719
+
715
720
assert ! ( rustup_dir. exists( ) ) ;
716
721
assert ! ( !old_rustup_sh_version_file. exists( ) ) ;
717
722
assert ! ( new_rustup_sh_version_file. exists( ) ) ;
718
723
} ) ;
719
724
}
725
+
726
+ #[ test]
727
+ fn multirust_upgrade_works_with_proxy ( ) {
728
+ setup ( & |config| {
729
+ let multirust_dir = config. homedir . join ( ".multirust" ) ;
730
+ let rustup_dir = config. homedir . join ( ".rustup" ) ;
731
+
732
+ // Put data in ~/.multirust
733
+ run_no_home ( config, & [ "rustup" , "default" , "stable" ] ,
734
+ & [ ( "RUSTUP_HOME" , & format ! ( "{}" , multirust_dir. display( ) ) ) ] ) ;
735
+
736
+ run_no_home ( config, & [ "rustc" , "--version" ] , & [ ] ) ;
737
+
738
+ assert ! ( multirust_dir. exists( ) ) ;
739
+ assert ! ( fs:: symlink_metadata( & multirust_dir) . unwrap( ) . file_type( ) . is_symlink( ) ) ;
740
+ assert ! ( rustup_dir. exists( ) ) ;
741
+ } ) ;
742
+ }
0 commit comments