3 releases
0.1.2 | Aug 19, 2024 |
---|---|
0.1.1 | Aug 15, 2024 |
0.1.0 | Aug 15, 2024 |
#439 in Concurrency
101 downloads per month
Used in 4 crates
8KB
92 lines
env-lock
A process's environment is a form of global mutable state. In Rust, tests are run in a shared process. This means tests that modify environment variables can inadvertently affect each other. env-lock
provides an interface to safely modify and lock the process environment, to prevent simultaneous access.
use std::env;
let var = "ENV_LOCK_TEST_VARIABLE";
assert!(env::var(var).is_err());
let guard = env_lock::lock_env([(var, Some("hello!"))]);
assert_eq!(env::var(var).unwrap(), "hello!");
drop(guard);
assert!(env::var(var).is_err());
lib.rs
:
Lock environment variables to prevent simultaneous access. Use [lock_env] to set values for whatever environment variables you intend to access in your test. This will return a guard that, when dropped, will revert the environment to its initial state. The guard uses a [Mutex] underneath to ensure that multiple tests within the same process can't access it at the same time.
use std::env;
let var = "ENV_LOCK_TEST_VARIABLE";
assert!(env::var(var).is_err());
let guard = env_lock::lock_env([(var, Some("hello!"))]);
assert_eq!(env::var(var).unwrap(), "hello!");
drop(guard);
assert!(env::var(var).is_err());