3 个版本
新版本 0.1.2 | 2024 年 8 月 19 日 |
---|---|
0.1.1 | 2024 年 8 月 15 日 |
0.1.0 | 2024 年 8 月 15 日 |
#475 在 并发
每月 349 次下载
在 editor-command 中使用
8KB
92 行
env-lock
进程的环境是一种全局可变状态。在 Rust 中,测试是在共享进程中运行的。这意味着修改环境变量的测试可能会意外地相互影响。env-lock
提供了一个接口,可以安全地修改和锁定进程环境,以防止同时访问。
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_env] 设置您测试中打算访问的任何环境变量的值。这将返回一个守卫,当它被丢弃时,将环境恢复到其初始状态。守卫在内部使用 [Mutex] 来确保同一进程中的多个测试不能同时访问它。
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());