Crates.io | env-test-util |
lib.rs | env-test-util |
version | 1.0.1 |
source | src |
created_at | 2020-11-05 07:19:24.212352 |
updated_at | 2020-11-05 12:08:53.631253 |
description | Just a simple tool to manipulate environment variable in tests. |
homepage | |
repository | https://github.com/jdrouet/env-test-util |
max_upload_size | |
id | 308812 |
size | 7,399 |
Just a simple tool to manipulate environment variable in tests.
When initialising the variable manager with new
, the actual content will be removed and stored
in initial_value
. You can then set a temporary value using the method with
. The environment
variable will then be reset to it's initial value when it will be dropped.
use env_test_util::TempEnvVar;
std::env::set_var("MY_VARIABLE", "ORIGINAL"); // set the variable to "ORIGINAL"
let variable = TempEnvVar::new("MY_VARIABLE"); // read the variable and stores it
assert_eq!(std::env::var("MY_VARIABLE").ok(), None);
let variable = variable.with("NEW_CONTENT"); // set the environment variable with a new content
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("NEW_CONTENT".into()));
drop(variable);
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("ORIGINAL".into()));
Don't forget to assign the variable in your tests, otherwise the drop
function will be called right away
use env_test_util::TempEnvVar;
std::env::set_var("MY_VARIABLE", "ORIGINAL"); // set the variable to "ORIGINAL"
TempEnvVar::new("MY_VARIABLE").with("SOMETHING_ELSE"); // read the variable and stores it
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("ORIGINAL".into()));
let _variable = TempEnvVar::new("MY_VARIABLE").with("SOMETHING_ELSE"); // Instead, store it in a variable
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("SOMETHING_ELSE".into()));
#[test]
fn testing_conntection_database() {
let _original_url = TempEnvVar::new("DATABASE_URL").with("postgres://wrong-url");
let connection = Database::connect(); // something that reads the environment variable
assert!(connection.is_err());
}