9个版本
0.3.6 | 2023年9月24日 |
---|---|
0.3.5 | 2023年9月1日 |
0.3.4 | 2023年4月19日 |
0.3.3 | 2023年3月22日 |
0.1.0 | 2021年12月3日 |
#23 in 测试
125,787 每月下载量
用于 84 个Crate(68个直接使用)
26KB
415 代码行
temp-env
临时设置环境变量。
此Crate对于使用不应相互干扰的不同环境变量进行测试非常有用。
此代码最初是由 @fabian-braun 和 @nbaztec 编写的一个小型测试辅助工具,并由 @fabian-braun 在 StackOverflow 上发布。 @vmx 认为此工具很有用,并花费时间将其制作成一个合适的Crate。
示例
temp_env::with_var("MY_ENV_VAR", Some("production"), || {
// Run some code where `MY_ENV_VAR` set to `"production"`.
});
temp_env::with_vars(
[
("FIRST_VAR", Some("Hello")),
("SECOND_VAR", Some("World!")),
],
|| {
// Run some code where `FIRST_VAR` is set to `"Hello"` and `SECOND_VAR` is set to
// `"World!"`.
}
);
temp_env::with_vars(
[
("FIRST_VAR", Some("Hello")),
("SECOND_VAR", None),
],
|| {
// Run some code where `FIRST_VAR` is set to `"Hello"` and `SECOND_VAR` is unset (even if
// it was set before)
}
);
从版本0.3.0开始,您可以从闭包内部返回一个值
let r = temp_env::with_var("MY_ENV_VAR", Some("production"), || {
let envvar = env::var("MY_ENV_VAR").unwrap();
if envvar == "production" {
true
} else {
false
}
});
它是如何工作的?
此Crate为当前运行的(Rust)进程设置和取消设置环境变量。它利用 std::env::set_var
。
提供的函数 temp_env::with_*
提供以下功能
- 避免在并行运行时相互干扰
- 在完成时将之前设置的环境变量重置为其原始值,即使在panic的情况下也是如此
- 临时取消设置环境变量
请注意,此Crate使用单例互斥锁来避免并行运行的测试之间的副作用。这可能会影响您的测试执行中的并发程度。
特性
async_closure
:当启用时,您可以使用async_with_var()
与异步闭包一起使用。此特性需要至少Rust版本1.64。
许可证
此项目根据以下许可证之一授权
- Apache许可证版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
由您选择。
依赖项
~0.4–6MB
~13K SLoC