@@ -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