#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

#453 in Testing

Download history 637/week @ 2024-01-07 540/week @ 2024-01-14 608/week @ 2024-01-21 466/week @ 2024-01-28 708/week @ 2024-02-04 748/week @ 2024-02-11 536/week @ 2024-02-18 458/week @ 2024-02-25 571/week @ 2024-03-03 479/week @ 2024-03-10 527/week @ 2024-03-17 790/week @ 2024-03-24 544/week @ 2024-03-31 467/week @ 2024-04-07 452/week @ 2024-04-14 380/week @ 2024-04-21

1,871 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