From b0460e5f712ff789866f5b8b4d5dde81fadbc8a1 Mon Sep 17 00:00:00 2001 From: James Brink Date: Sat, 8 Feb 2025 20:38:20 -0700 Subject: [PATCH] fix: Fix environment variable handling in config tests - Move environment variable setup before EnvGuard creation - Modify EnvGuard to only clean up on drop, not on creation - Add explicit environment variable checks - Fix test_config_from_env panic --- tests/config_test.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/config_test.rs b/tests/config_test.rs index 3de9ee8..93ed3ac 100644 --- a/tests/config_test.rs +++ b/tests/config_test.rs @@ -63,10 +63,6 @@ struct EnvGuard { impl EnvGuard { fn new(vars: Vec<&'static str>) -> Self { - // Clean up any existing values - for var in &vars { - env::remove_var(var); - } Self { vars } } } @@ -82,6 +78,14 @@ impl Drop for EnvGuard { #[test] fn test_config_from_env() -> Result<()> { + // Set test environment variables first + env::set_var("STRAINER_API_KEY", "env-test-key"); + env::set_var("STRAINER_PROVIDER", "anthropic"); + env::set_var("STRAINER_BASE_URL", "https://env.api.com"); + env::set_var("STRAINER_REQUESTS_PER_MINUTE", "30"); + env::set_var("STRAINER_TOKENS_PER_MINUTE", "50000"); + + // Create a guard to clean up environment variables on test completion let _guard = EnvGuard::new(vec![ "STRAINER_API_KEY", "STRAINER_PROVIDER", @@ -90,14 +94,11 @@ fn test_config_from_env() -> Result<()> { "STRAINER_TOKENS_PER_MINUTE", ]); - // Set test environment variables - env::set_var("STRAINER_API_KEY", "env-test-key"); - env::set_var("STRAINER_PROVIDER", "anthropic"); - env::set_var("STRAINER_BASE_URL", "https://env.api.com"); - env::set_var("STRAINER_REQUESTS_PER_MINUTE", "30"); - env::set_var("STRAINER_TOKENS_PER_MINUTE", "50000"); - + // Create config from environment let config = Config::from_env()?; + + // Verify each environment variable was properly read + assert_eq!(env::var("STRAINER_API_KEY").ok(), Some("env-test-key".to_string())); assert_eq!(config.api.provider, "anthropic"); assert_eq!(config.api.api_key, Some("env-test-key".to_string())); assert_eq!(config.api.base_url, Some("https://env.api.com".to_string()));