Skip to content
/ rust Public
forked from rust-lang/rust

Commit

Permalink
std: Apply deprecated_safe_2024
Browse files Browse the repository at this point in the history
  • Loading branch information
ehuss committed Feb 13, 2025
1 parent 36733f3 commit ef20a1b
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 42 deletions.
2 changes: 1 addition & 1 deletion library/std/src/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,7 @@ pub struct JoinPathsError {
/// let mut paths = env::split_paths(&path).collect::<Vec<_>>();
/// paths.push(PathBuf::from("/home/xyz/bin"));
/// let new_path = env::join_paths(paths)?;
/// env::set_var("PATH", &new_path);
/// unsafe { env::set_var("PATH", &new_path); }
/// }
///
/// Ok(())
Expand Down
8 changes: 6 additions & 2 deletions library/std/src/process/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -323,9 +323,13 @@ fn test_capture_env_at_spawn() {

// This variable will not be present if the environment has already
// been captured above.
env::set_var("RUN_TEST_NEW_ENV2", "456");
unsafe {
env::set_var("RUN_TEST_NEW_ENV2", "456");
}
let result = cmd.output().unwrap();
env::remove_var("RUN_TEST_NEW_ENV2");
unsafe {
env::remove_var("RUN_TEST_NEW_ENV2");
}

let output = String::from_utf8_lossy(&result.stdout).to_string();

Expand Down
8 changes: 4 additions & 4 deletions library/std/src/sys/pal/uefi/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,8 @@ impl Command {
if let Some(e) = &env {
for (k, (_, v)) in e {
match v {
Some(v) => crate::env::set_var(k, v),
None => crate::env::remove_var(k),
Some(v) => unsafe { crate::env::set_var(k, v) },
None => unsafe { crate::env::remove_var(k) },
}
}
}
Expand All @@ -166,8 +166,8 @@ impl Command {
if let Some(e) = env {
for (k, (v, _)) in e {
match v {
Some(v) => crate::env::set_var(k, v),
None => crate::env::remove_var(k),
Some(v) => unsafe { crate::env::set_var(k, v) },
None => unsafe { crate::env::remove_var(k) },
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions library/std/src/sys/pal/windows/process/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,10 @@ fn windows_env_unicode_case() {
let mut cmd = Command::new("cmd");
cmd.env(a, "1");
cmd.env(b, "2");
env::set_var(a, "1");
env::set_var(b, "2");
unsafe {
env::set_var(a, "1");
env::set_var(b, "2");
}

for (key, value) in cmd.get_envs() {
assert_eq!(
Expand Down
84 changes: 51 additions & 33 deletions library/std/tests/env_modify.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,26 +26,32 @@ fn eq(a: Option<OsString>, b: Option<&str>) {
#[test]
fn test_set_var() {
let n = make_rand_name();
set_var(&n, "VALUE");
unsafe {
set_var(&n, "VALUE");
}
eq(var_os(&n), Some("VALUE"));
}

#[test]
fn test_remove_var() {
let n = make_rand_name();
set_var(&n, "VALUE");
remove_var(&n);
unsafe {
set_var(&n, "VALUE");
remove_var(&n);
}
eq(var_os(&n), None);
}

#[test]
fn test_set_var_overwrite() {
let n = make_rand_name();
set_var(&n, "1");
set_var(&n, "2");
eq(var_os(&n), Some("2"));
set_var(&n, "");
eq(var_os(&n), Some(""));
unsafe {
set_var(&n, "1");
set_var(&n, "2");
eq(var_os(&n), Some("2"));
set_var(&n, "");
eq(var_os(&n), Some(""));
}
}

#[test]
Expand All @@ -58,7 +64,9 @@ fn test_var_big() {
i += 1;
}
let n = make_rand_name();
set_var(&n, &s);
unsafe {
set_var(&n, &s);
}
eq(var_os(&n), Some(&s));
}

Expand All @@ -67,18 +75,22 @@ fn test_var_big() {
fn test_env_set_get_huge() {
let n = make_rand_name();
let s = "x".repeat(10000);
set_var(&n, &s);
eq(var_os(&n), Some(&s));
remove_var(&n);
eq(var_os(&n), None);
unsafe {
set_var(&n, &s);
eq(var_os(&n), Some(&s));
remove_var(&n);
eq(var_os(&n), None);
}
}

#[test]
fn test_env_set_var() {
let n = make_rand_name();

let mut e = vars_os();
set_var(&n, "VALUE");
unsafe {
set_var(&n, "VALUE");
}
assert!(!e.any(|(k, v)| { &*k == &*n && &*v == "VALUE" }));

assert!(vars_os().any(|(k, v)| { &*k == &*n && &*v == "VALUE" }));
Expand All @@ -102,10 +114,12 @@ fn env_home_dir() {
if #[cfg(unix)] {
let oldhome = var_to_os_string(var("HOME"));

set_var("HOME", "/home/MountainView");
assert_eq!(home_dir(), Some(PathBuf::from("/home/MountainView")));
unsafe {
set_var("HOME", "/home/MountainView");
assert_eq!(home_dir(), Some(PathBuf::from("/home/MountainView")));

remove_var("HOME");
remove_var("HOME");
}
if cfg!(target_os = "android") {
assert!(home_dir().is_none());
} else {
Expand All @@ -115,33 +129,35 @@ fn env_home_dir() {
assert_ne!(home_dir(), Some(PathBuf::from("/home/MountainView")));
}

if let Some(oldhome) = oldhome { set_var("HOME", oldhome); }
if let Some(oldhome) = oldhome { unsafe { set_var("HOME", oldhome); } }
} else if #[cfg(windows)] {
let oldhome = var_to_os_string(var("HOME"));
let olduserprofile = var_to_os_string(var("USERPROFILE"));

remove_var("HOME");
remove_var("USERPROFILE");
unsafe {
remove_var("HOME");
remove_var("USERPROFILE");

assert!(home_dir().is_some());
assert!(home_dir().is_some());

set_var("HOME", "/home/PaloAlto");
assert_ne!(home_dir(), Some(PathBuf::from("/home/PaloAlto")), "HOME must not be used");
set_var("HOME", "/home/PaloAlto");
assert_ne!(home_dir(), Some(PathBuf::from("/home/PaloAlto")), "HOME must not be used");

set_var("USERPROFILE", "/home/MountainView");
assert_eq!(home_dir(), Some(PathBuf::from("/home/MountainView")));
set_var("USERPROFILE", "/home/MountainView");
assert_eq!(home_dir(), Some(PathBuf::from("/home/MountainView")));

remove_var("HOME");
remove_var("HOME");

assert_eq!(home_dir(), Some(PathBuf::from("/home/MountainView")));
assert_eq!(home_dir(), Some(PathBuf::from("/home/MountainView")));

set_var("USERPROFILE", "");
assert_ne!(home_dir(), Some(PathBuf::from("")), "Empty USERPROFILE must be ignored");
set_var("USERPROFILE", "");
assert_ne!(home_dir(), Some(PathBuf::from("")), "Empty USERPROFILE must be ignored");

remove_var("USERPROFILE");
remove_var("USERPROFILE");

if let Some(oldhome) = oldhome { set_var("HOME", oldhome); }
if let Some(olduserprofile) = olduserprofile { set_var("USERPROFILE", olduserprofile); }
if let Some(oldhome) = oldhome { set_var("HOME", oldhome); }
if let Some(olduserprofile) = olduserprofile { set_var("USERPROFILE", olduserprofile); }
}
}
}
}
Expand All @@ -157,7 +173,9 @@ fn test_env_get_set_multithreaded() {

let setter = thread::spawn(|| {
for _ in 0..100 {
set_var("foo", "bar");
unsafe {
set_var("foo", "bar");
}
}
});

Expand Down

0 comments on commit ef20a1b

Please sign in to comment.