@@ -816,7 +816,7 @@ mod tests {
816
816
use winreg:: { RegKey , RegValue } ;
817
817
818
818
use crate :: currentprocess:: TestProcess ;
819
- use crate :: test:: with_saved_path ;
819
+ use crate :: test:: { RegistryGuard , USER_PATH } ;
820
820
821
821
fn wide ( str : & str ) -> Vec < u16 > {
822
822
OsString :: from ( str) . encode_wide ( ) . collect ( )
@@ -856,60 +856,58 @@ mod tests {
856
856
#[ test]
857
857
fn windows_path_regkey_type ( ) {
858
858
// per issue #261, setting PATH should use REG_EXPAND_SZ.
859
- with_saved_path ( & mut || {
860
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
861
- let environment = root
862
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
863
- . unwrap ( ) ;
864
- environment. delete_value ( "PATH" ) . unwrap ( ) ;
865
-
866
- {
867
- // Can't compare the Results as Eq isn't derived; thanks error-chain.
868
- #![ allow( clippy:: unit_cmp) ]
869
- assert_eq ! ( ( ) , super :: _apply_new_path( Some ( wide( "foo" ) ) ) . unwrap( ) ) ;
870
- }
871
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
872
- let environment = root
873
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
874
- . unwrap ( ) ;
875
- let path = environment. get_raw_value ( "PATH" ) . unwrap ( ) ;
876
- assert_eq ! ( path. vtype, RegType :: REG_EXPAND_SZ ) ;
877
- assert_eq ! ( super :: to_winreg_bytes( wide( "foo" ) ) , & path. bytes[ ..] ) ;
878
- } ) ;
859
+ let _guard = RegistryGuard :: new ( & USER_PATH ) ;
860
+ let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
861
+ let environment = root
862
+ . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
863
+ . unwrap ( ) ;
864
+ environment. delete_value ( "PATH" ) . unwrap ( ) ;
865
+
866
+ {
867
+ // Can't compare the Results as Eq isn't derived; thanks error-chain.
868
+ #![ allow( clippy:: unit_cmp) ]
869
+ assert_eq ! ( ( ) , super :: _apply_new_path( Some ( wide( "foo" ) ) ) . unwrap( ) ) ;
870
+ }
871
+ let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
872
+ let environment = root
873
+ . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
874
+ . unwrap ( ) ;
875
+ let path = environment. get_raw_value ( "PATH" ) . unwrap ( ) ;
876
+ assert_eq ! ( path. vtype, RegType :: REG_EXPAND_SZ ) ;
877
+ assert_eq ! ( super :: to_winreg_bytes( wide( "foo" ) ) , & path. bytes[ ..] ) ;
879
878
}
880
879
881
880
#[ test]
882
881
fn windows_path_delete_key_when_empty ( ) {
883
882
use std:: io;
884
883
// during uninstall the PATH key may end up empty; if so we should
885
884
// delete it.
886
- with_saved_path ( & mut || {
887
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
888
- let environment = root
889
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
890
- . unwrap ( ) ;
891
- environment
892
- . set_raw_value (
893
- "PATH" ,
894
- & RegValue {
895
- bytes : super :: to_winreg_bytes ( wide ( "foo" ) ) ,
896
- vtype : RegType :: REG_EXPAND_SZ ,
897
- } ,
898
- )
899
- . unwrap ( ) ;
900
-
901
- {
902
- // Can't compare the Results as Eq isn't derived; thanks error-chain.
903
- #![ allow( clippy:: unit_cmp) ]
904
- assert_eq ! ( ( ) , super :: _apply_new_path( Some ( Vec :: new( ) ) ) . unwrap( ) ) ;
905
- }
906
- let reg_value = environment. get_raw_value ( "PATH" ) ;
907
- match reg_value {
908
- Ok ( _) => panic ! ( "key not deleted" ) ,
909
- Err ( ref e) if e. kind ( ) == io:: ErrorKind :: NotFound => { }
910
- Err ( ref e) => panic ! ( "error {e}" ) ,
911
- }
912
- } ) ;
885
+ let _guard = RegistryGuard :: new ( & USER_PATH ) ;
886
+ let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
887
+ let environment = root
888
+ . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
889
+ . unwrap ( ) ;
890
+ environment
891
+ . set_raw_value (
892
+ "PATH" ,
893
+ & RegValue {
894
+ bytes : super :: to_winreg_bytes ( wide ( "foo" ) ) ,
895
+ vtype : RegType :: REG_EXPAND_SZ ,
896
+ } ,
897
+ )
898
+ . unwrap ( ) ;
899
+
900
+ {
901
+ // Can't compare the Results as Eq isn't derived; thanks error-chain.
902
+ #![ allow( clippy:: unit_cmp) ]
903
+ assert_eq ! ( ( ) , super :: _apply_new_path( Some ( Vec :: new( ) ) ) . unwrap( ) ) ;
904
+ }
905
+ let reg_value = environment. get_raw_value ( "PATH" ) ;
906
+ match reg_value {
907
+ Ok ( _) => panic ! ( "key not deleted" ) ,
908
+ Err ( ref e) if e. kind ( ) == io:: ErrorKind :: NotFound => { }
909
+ Err ( ref e) => panic ! ( "error {e}" ) ,
910
+ }
913
911
}
914
912
915
913
#[ test]
@@ -921,22 +919,23 @@ mod tests {
921
919
. cloned ( )
922
920
. collect ( ) ,
923
921
) ;
924
- with_saved_path ( & mut || {
925
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
926
- let environment = root
927
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
928
- . unwrap ( ) ;
929
- let reg_value = RegValue {
930
- bytes : vec ! [ 0x12 , 0x34 ] ,
931
- vtype : RegType :: REG_BINARY ,
932
- } ;
933
- environment. set_raw_value ( "PATH" , & reg_value) . unwrap ( ) ;
934
- // Ok(None) signals no change to the PATH setting layer
935
- assert_eq ! (
936
- None ,
937
- super :: _with_path_cargo_home_bin( |_, _| panic!( "called" ) , & tp. process) . unwrap( )
938
- ) ;
939
- } ) ;
922
+
923
+ let _guard = RegistryGuard :: new ( & USER_PATH ) ;
924
+ let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
925
+ let environment = root
926
+ . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
927
+ . unwrap ( ) ;
928
+ let reg_value = RegValue {
929
+ bytes : vec ! [ 0x12 , 0x34 ] ,
930
+ vtype : RegType :: REG_BINARY ,
931
+ } ;
932
+ environment. set_raw_value ( "PATH" , & reg_value) . unwrap ( ) ;
933
+ // Ok(None) signals no change to the PATH setting layer
934
+ assert_eq ! (
935
+ None ,
936
+ super :: _with_path_cargo_home_bin( |_, _| panic!( "called" ) , & tp. process) . unwrap( )
937
+ ) ;
938
+
940
939
assert_eq ! (
941
940
r"warn: the registry key HKEY_CURRENT_USER\Environment\PATH is not a string. Not modifying the PATH variable
942
941
" ,
@@ -947,15 +946,14 @@ mod tests {
947
946
#[ test]
948
947
fn windows_treat_missing_path_as_empty ( ) {
949
948
// during install the PATH key may be missing; treat it as empty
950
- with_saved_path ( & mut || {
951
- let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
952
- let environment = root
953
- . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
954
- . unwrap ( ) ;
955
- environment. delete_value ( "PATH" ) . unwrap ( ) ;
956
-
957
- assert_eq ! ( Some ( Vec :: new( ) ) , super :: get_windows_path_var( ) . unwrap( ) ) ;
958
- } ) ;
949
+ let _guard = RegistryGuard :: new ( & USER_PATH ) ;
950
+ let root = RegKey :: predef ( HKEY_CURRENT_USER ) ;
951
+ let environment = root
952
+ . open_subkey_with_flags ( "Environment" , KEY_READ | KEY_WRITE )
953
+ . unwrap ( ) ;
954
+ environment. delete_value ( "PATH" ) . unwrap ( ) ;
955
+
956
+ assert_eq ! ( Some ( Vec :: new( ) ) , super :: get_windows_path_var( ) . unwrap( ) ) ;
959
957
}
960
958
961
959
#[ test]
0 commit comments