From ad5abe1748eeac8015d567a784eb22085a06e18a Mon Sep 17 00:00:00 2001 From: Jean-Gabriel Gill-Couture Date: Wed, 7 Jan 2026 14:13:28 -0500 Subject: [PATCH] fix(test): Use a mutex to prevent race conditions between tests relying on KUBECONFIG env var --- harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs b/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs index 5b691cc..76280d8 100644 --- a/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs +++ b/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs @@ -1222,9 +1222,11 @@ fn extract_base_domain(host: &str) -> Option { #[cfg(test)] mod tests { use super::*; + use std::sync::Mutex; use std::sync::atomic::{AtomicUsize, Ordering}; static TEST_COUNTER: AtomicUsize = AtomicUsize::new(0); + static ENV_LOCK: Mutex<()> = Mutex::new(()); /// Sets environment variables with unique names to avoid concurrency issues between tests. /// Returns the names of the (config_var, profile_var) used. @@ -1289,6 +1291,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_only_context() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::remove_var("KUBECONFIG"); @@ -1305,6 +1308,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_unknown_key_trim() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::remove_var("KUBECONFIG"); @@ -1324,6 +1328,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_empty_malformed() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::remove_var("KUBECONFIG"); @@ -1341,6 +1346,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_kubeconfig_fallback() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::set_var("KUBECONFIG", "/fallback/path"); @@ -1357,6 +1363,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_kubeconfig_no_fallback_if_provided() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::set_var("KUBECONFIG", "/fallback/path");