summaryrefslogtreecommitdiffstats
path: root/library/std/tests/env.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/std/tests/env.rs')
-rw-r--r--library/std/tests/env.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/library/std/tests/env.rs b/library/std/tests/env.rs
index 96b4f372b..a1ca85c21 100644
--- a/library/std/tests/env.rs
+++ b/library/std/tests/env.rs
@@ -5,6 +5,7 @@ use rand::distributions::{Alphanumeric, DistString};
mod common;
use common::test_rng;
+use std::thread;
#[track_caller]
fn make_rand_name() -> OsString {
@@ -140,3 +141,22 @@ fn env_home_dir() {
}
}
}
+
+#[test] // miri shouldn't detect any data race in this fn
+#[cfg_attr(any(not(miri), target_os = "emscripten"), ignore)]
+fn test_env_get_set_multithreaded() {
+ let getter = thread::spawn(|| {
+ for _ in 0..100 {
+ let _ = var_os("foo");
+ }
+ });
+
+ let setter = thread::spawn(|| {
+ for _ in 0..100 {
+ set_var("foo", "bar");
+ }
+ });
+
+ let _ = getter.join();
+ let _ = setter.join();
+}