about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-08-21 03:31:53 +0000
committerbors <bors@rust-lang.org>2023-08-21 03:31:53 +0000
commitc40cfcf0494ff7506e753e750adb00eeea839f9c (patch)
tree6eab1888744cf1d10dcb8eacda645dce89c8cf33
parent8a562f9671e36cf29c9c794c2646bcf252d55535 (diff)
parentf8a2f31ae48fbcf8b71684851b3652007a7094d7 (diff)
downloadrust-c40cfcf0494ff7506e753e750adb00eeea839f9c.tar.gz
rust-c40cfcf0494ff7506e753e750adb00eeea839f9c.zip
Auto merge of #115035 - ShE3py:getsetenv-miri-test, r=thomcc
Add data race test to `std::env::{get, set}`

Complements #114968, closes #114949.
-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 96b4f372b8b..a1ca85c2145 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();
+}