@@ -26,26 +26,32 @@ fn eq(a: Option<OsString>, b: Option<&str>) {
26
26
#[ test]
27
27
fn test_set_var ( ) {
28
28
let n = make_rand_name ( ) ;
29
- set_var ( & n, "VALUE" ) ;
29
+ unsafe {
30
+ set_var ( & n, "VALUE" ) ;
31
+ }
30
32
eq ( var_os ( & n) , Some ( "VALUE" ) ) ;
31
33
}
32
34
33
35
#[ test]
34
36
fn test_remove_var ( ) {
35
37
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
+ }
38
42
eq ( var_os ( & n) , None ) ;
39
43
}
40
44
41
45
#[ test]
42
46
fn test_set_var_overwrite ( ) {
43
47
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
+ }
49
55
}
50
56
51
57
#[ test]
@@ -58,7 +64,9 @@ fn test_var_big() {
58
64
i += 1 ;
59
65
}
60
66
let n = make_rand_name ( ) ;
61
- set_var ( & n, & s) ;
67
+ unsafe {
68
+ set_var ( & n, & s) ;
69
+ }
62
70
eq ( var_os ( & n) , Some ( & s) ) ;
63
71
}
64
72
@@ -67,18 +75,22 @@ fn test_var_big() {
67
75
fn test_env_set_get_huge ( ) {
68
76
let n = make_rand_name ( ) ;
69
77
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
+ }
74
84
}
75
85
76
86
#[ test]
77
87
fn test_env_set_var ( ) {
78
88
let n = make_rand_name ( ) ;
79
89
80
90
let mut e = vars_os ( ) ;
81
- set_var ( & n, "VALUE" ) ;
91
+ unsafe {
92
+ set_var ( & n, "VALUE" ) ;
93
+ }
82
94
assert ! ( !e. any( |( k, v) | { & * k == & * n && & * v == "VALUE" } ) ) ;
83
95
84
96
assert ! ( vars_os( ) . any( |( k, v) | { & * k == & * n && & * v == "VALUE" } ) ) ;
@@ -102,10 +114,12 @@ fn env_home_dir() {
102
114
if #[ cfg( unix) ] {
103
115
let oldhome = var_to_os_string( var( "HOME" ) ) ;
104
116
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" ) ) ) ;
107
120
108
- remove_var( "HOME" ) ;
121
+ remove_var( "HOME" ) ;
122
+ }
109
123
if cfg!( target_os = "android" ) {
110
124
assert!( home_dir( ) . is_none( ) ) ;
111
125
} else {
@@ -115,33 +129,35 @@ fn env_home_dir() {
115
129
assert_ne!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
116
130
}
117
131
118
- if let Some ( oldhome) = oldhome { set_var( "HOME" , oldhome) ; }
132
+ if let Some ( oldhome) = oldhome { unsafe { set_var( "HOME" , oldhome) ; } }
119
133
} else if #[ cfg( windows) ] {
120
134
let oldhome = var_to_os_string( var( "HOME" ) ) ;
121
135
let olduserprofile = var_to_os_string( var( "USERPROFILE" ) ) ;
122
136
123
- remove_var( "HOME" ) ;
124
- remove_var( "USERPROFILE" ) ;
137
+ unsafe {
138
+ remove_var( "HOME" ) ;
139
+ remove_var( "USERPROFILE" ) ;
125
140
126
- assert!( home_dir( ) . is_some( ) ) ;
141
+ assert!( home_dir( ) . is_some( ) ) ;
127
142
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" ) ;
130
145
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" ) ) ) ;
133
148
134
- remove_var( "HOME" ) ;
149
+ remove_var( "HOME" ) ;
135
150
136
- assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
151
+ assert_eq!( home_dir( ) , Some ( PathBuf :: from( "/home/MountainView" ) ) ) ;
137
152
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" ) ;
140
155
141
- remove_var( "USERPROFILE" ) ;
156
+ remove_var( "USERPROFILE" ) ;
142
157
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
+ }
145
161
}
146
162
}
147
163
}
@@ -157,7 +173,9 @@ fn test_env_get_set_multithreaded() {
157
173
158
174
let setter = thread:: spawn ( || {
159
175
for _ in 0 ..100 {
160
- set_var ( "foo" , "bar" ) ;
176
+ unsafe {
177
+ set_var ( "foo" , "bar" ) ;
178
+ }
161
179
}
162
180
} ) ;
163
181
0 commit comments