#env-var #variables #environment #manipulate #utils #manager

env-test-util

Just a simple tool to manipulate environment variable in tests

3 releases (stable)

1.0.1 Nov 5, 2020
0.1.0 Nov 5, 2020

#729 in Testing

Download history 483/week @ 2024-11-18 390/week @ 2024-11-25 641/week @ 2024-12-02 697/week @ 2024-12-09 540/week @ 2024-12-16 316/week @ 2024-12-23 506/week @ 2024-12-30 916/week @ 2025-01-06 1007/week @ 2025-01-13 734/week @ 2025-01-20 554/week @ 2025-01-27 1236/week @ 2025-02-03 1141/week @ 2025-02-10 678/week @ 2025-02-17 1164/week @ 2025-02-24 941/week @ 2025-03-03

3,959 downloads per month
Used in chanoma

MIT/Apache

8KB
56 lines

Env test util

Crates.io Crates.io

Build Status codecov

Just a simple tool to manipulate environment variable in tests.

Usage

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.

Examples

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()));

Real life example

#[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());
}

No runtime deps