Set environment variables temporarily.
This crate is useful for testing with different environment variables that should not interfere.
This code started as a small test helper written by @fabian-braun and @nbaztec and published by @fabian-braun on StackOverflow. @vmx found it useful and took the time to make it a proper crate.
; with_vars; with_vars; with_var
Starting from version 0.3.0 you can return a value from inside the closure:
let r = with_var;
How does it work?
This crate sets and unsets environment variables for the currently running (Rust) process.
The provided functions
temp_env::with_* provide the following features:
- Avoid interference when running concurrently
- Reset previously set env variables back to their original value upon completion, also in case of panic
- Temporarily unsetting env variables
Note that the crate makes use of a singleton mutex to avoid side effects between concurrently running tests. This may impact the degree of concurrency in your test execution.
async_closure: When enabled you can use
async_with_var()with async closures. This feature needs at least Rust version 1.64.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.