#![allow(unsafe_code)]
use hyperi_rustlib::env::{Environment, get_app_env};
#[test]
fn test_detect_returns_valid_environment() {
let env = Environment::detect();
assert!(matches!(
env,
Environment::Kubernetes
| Environment::Docker
| Environment::Container
| Environment::BareMetal
));
}
#[test]
fn test_is_container_parity() {
assert!(Environment::Kubernetes.is_container());
assert!(Environment::Docker.is_container());
assert!(Environment::Container.is_container());
assert!(!Environment::BareMetal.is_container());
}
#[test]
fn test_get_app_env_priority() {
unsafe {
std::env::remove_var("APP_ENV");
std::env::remove_var("ENVIRONMENT");
std::env::remove_var("ENV");
assert_eq!(get_app_env(), "development");
std::env::set_var("ENV", "staging");
assert_eq!(get_app_env(), "staging");
std::env::set_var("ENVIRONMENT", "production");
assert_eq!(get_app_env(), "production");
std::env::set_var("APP_ENV", "testing");
assert_eq!(get_app_env(), "testing");
std::env::remove_var("APP_ENV");
std::env::remove_var("ENVIRONMENT");
std::env::remove_var("ENV");
}
}
#[test]
fn test_environment_display_parity() {
assert_eq!(Environment::Kubernetes.to_string(), "kubernetes");
assert_eq!(Environment::Docker.to_string(), "docker");
assert_eq!(Environment::Container.to_string(), "container");
assert_eq!(Environment::BareMetal.to_string(), "bare_metal");
}