3 个版本

新版本 0.1.2 2024 年 8 月 19 日
0.1.1 2024 年 8 月 15 日
0.1.0 2024 年 8 月 15 日

#475并发

Download history 349/week @ 2024-08-13

每月 349 次下载
editor-command 中使用

MIT 许可证

8KB
92

env-lock

Test CI crates.io docs.rs

进程的环境是一种全局可变状态。在 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());

无运行时依赖项