@@ -26,26 +26,32 @@ fn eq(a: Option<OsString>, b: Option<&str>) {
2626#[ test]
2727fn test_set_var ( ) {
2828 let n = make_rand_name ( ) ;
29- set_var ( & n, "VALUE" ) ;
29+ unsafe {
30+ set_var ( & n, "VALUE" ) ;
31+ }
3032 eq ( var_os ( & n) , Some ( "VALUE" ) ) ;
3133}
3234
3335#[ test]
3436fn test_remove_var ( ) {
3537 let n = make_rand_name ( ) ;
36- set_var ( & n, "VALUE" ) ;
37- remove_var ( & n) ;
38+ unsafe {
39+ set_var ( & n, "VALUE" ) ;
40+ remove_var ( & n) ;
41+ }
3842 eq ( var_os ( & n) , None ) ;
3943}
4044
4145#[ test]
4246fn test_set_var_overwrite ( ) {
4347 let n = make_rand_name ( ) ;
44- set_var ( & n, "1" ) ;
45- set_var ( & n, "2" ) ;
46- eq ( var_os ( & n) , Some ( "2" ) ) ;
47- set_var ( & n, "" ) ;
48- eq ( var_os ( & n) , Some ( "" ) ) ;
48+ unsafe {
49+ set_var ( & n, "1" ) ;
50+ set_var ( & n, "2" ) ;
51+ eq ( var_os ( & n) , Some ( "2" ) ) ;
52+ set_var ( & n, "" ) ;
53+ eq ( var_os ( & n) , Some ( "" ) ) ;
54+ }
4955}
5056
5157#[ test]
@@ -58,7 +64,9 @@ fn test_var_big() {
5864 i += 1 ;
5965 }
6066 let n = make_rand_name ( ) ;
61- set_var ( & n, & s) ;
67+ unsafe {
68+ set_var ( & n, & s) ;
69+ }
6270 eq ( var_os ( & n) , Some ( & s) ) ;
6371}
6472
@@ -67,18 +75,22 @@ fn test_var_big() {
6775fn test_env_set_get_huge ( ) {
6876 let n = make_rand_name ( ) ;
6977 let s = "x" . repeat ( 10000 ) ;
70- set_var ( & n, & s) ;
71- eq ( var_os ( & n) , Some ( & s) ) ;
72- remove_var ( & n) ;
73- eq ( var_os ( & n) , None ) ;
78+ unsafe {
79+ set_var ( & n, & s) ;
80+ eq ( var_os ( & n) , Some ( & s) ) ;
81+ remove_var ( & n) ;
82+ eq ( var_os ( & n) , None ) ;
83+ }
7484}
7585
7686#[ test]
7787fn test_env_set_var ( ) {
7888 let n = make_rand_name ( ) ;
7989
8090 let mut e = vars_os ( ) ;
81- set_var ( & n, "VALUE" ) ;
91+ unsafe {
92+ set_var ( & n, "VALUE" ) ;
93+ }
8294 assert ! ( !e. any( |( k, v) | { & * k == & * n && & * v == "VALUE" } ) ) ;
8395
8496 assert ! ( vars_os( ) . any( |( k, v) | { & * k == & * n && & * v == "VALUE" } ) ) ;
@@ -102,10 +114,12 @@ fn env_home_dir() {
102114 if #[ cfg( unix) ] {
103115 let oldhome = var_to_os_string( var( "HOME" ) ) ;
104116
105- set_var( "HOME" , "/home/MountainView" ) ;
106- assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
117+ unsafe {
118+ set_var( "HOME" , "/home/MountainView" ) ;
119+ assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
107120
108- remove_var( "HOME" ) ;
121+ remove_var( "HOME" ) ;
122+ }
109123 if cfg!( target_os = "android" ) {
110124 assert!( home_dir( ) . is_none( ) ) ;
111125 } else {
@@ -115,33 +129,35 @@ fn env_home_dir() {
115129 assert_ne!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
116130 }
117131
118- if let Some ( oldhome) = oldhome { set_var( "HOME" , oldhome) ; }
132+ if let Some ( oldhome) = oldhome { unsafe { set_var( "HOME" , oldhome) ; } }
119133 } else if #[ cfg( windows) ] {
120134 let oldhome = var_to_os_string( var( "HOME" ) ) ;
121135 let olduserprofile = var_to_os_string( var( "USERPROFILE" ) ) ;
122136
123- remove_var( "HOME" ) ;
124- remove_var( "USERPROFILE" ) ;
137+ unsafe {
138+ remove_var( "HOME" ) ;
139+ remove_var( "USERPROFILE" ) ;
125140
126- assert!( home_dir( ) . is_some( ) ) ;
141+ assert!( home_dir( ) . is_some( ) ) ;
127142
128- set_var( "HOME" , "/home/PaloAlto" ) ;
129- assert_ne!( home_dir( ) , Some ( PathBuf :: from( "/home/PaloAlto" ) ) , "HOME must not be used" ) ;
143+ set_var( "HOME" , "/home/PaloAlto" ) ;
144+ assert_ne!( home_dir( ) , Some ( PathBuf :: from( "/home/PaloAlto" ) ) , "HOME must not be used" ) ;
130145
131- set_var( "USERPROFILE" , "/home/MountainView" ) ;
132- assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
146+ set_var( "USERPROFILE" , "/home/MountainView" ) ;
147+ assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
133148
134- remove_var( "HOME" ) ;
149+ remove_var( "HOME" ) ;
135150
136- assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
151+ assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
137152
138- set_var( "USERPROFILE" , "" ) ;
139- assert_ne!( home_dir( ) , Some ( PathBuf :: from( "" ) ) , "Empty USERPROFILE must be ignored" ) ;
153+ set_var( "USERPROFILE" , "" ) ;
154+ assert_ne!( home_dir( ) , Some ( PathBuf :: from( "" ) ) , "Empty USERPROFILE must be ignored" ) ;
140155
141- remove_var( "USERPROFILE" ) ;
156+ remove_var( "USERPROFILE" ) ;
142157
143- if let Some ( oldhome) = oldhome { set_var( "HOME" , oldhome) ; }
144- if let Some ( olduserprofile) = olduserprofile { set_var( "USERPROFILE" , olduserprofile) ; }
158+ if let Some ( oldhome) = oldhome { set_var( "HOME" , oldhome) ; }
159+ if let Some ( olduserprofile) = olduserprofile { set_var( "USERPROFILE" , olduserprofile) ; }
160+ }
145161 }
146162 }
147163}
@@ -157,7 +173,9 @@ fn test_env_get_set_multithreaded() {
157173
158174 let setter = thread:: spawn ( || {
159175 for _ in 0 ..100 {
160- set_var ( "foo" , "bar" ) ;
176+ unsafe {
177+ set_var ( "foo" , "bar" ) ;
178+ }
161179 }
162180 } ) ;
163181
0 commit comments