3 releases

0.1.2 Aug 19, 2024
0.1.1 Aug 15, 2024
0.1.0 Aug 15, 2024

#445 in Concurrency

Download history 66/week @ 2024-09-01 12/week @ 2024-09-08 58/week @ 2024-09-15 59/week @ 2024-09-22 42/week @ 2024-09-29 16/week @ 2024-10-06 21/week @ 2024-10-13 54/week @ 2024-10-20 27/week @ 2024-10-27 23/week @ 2024-11-03 19/week @ 2024-11-10 12/week @ 2024-11-17 47/week @ 2024-11-24 20/week @ 2024-12-01 55/week @ 2024-12-08 14/week @ 2024-12-15

138 downloads per month
Used in 4 crates

MIT license

8KB
92 lines

env-lock

Test CI crates.io docs.rs

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());

No runtime deps