diff --git a/Cargo.lock b/Cargo.lock index 3887b73a6..5bc2bb596 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5427,6 +5427,7 @@ dependencies = [ "serde-aux", "serde_json", "serde_with", + "serial_test", "sha2 0.10.9", "shell-escape", "shlex", diff --git a/cmd/soroban-cli/Cargo.toml b/cmd/soroban-cli/Cargo.toml index 3267ab959..7cd0452bc 100644 --- a/cmd/soroban-cli/Cargo.toml +++ b/cmd/soroban-cli/Cargo.toml @@ -141,3 +141,4 @@ assert_fs = "1.0.7" predicates = { workspace = true } walkdir = "2.5.0" mockito = "1.5.0" +serial_test = "3.0.0" diff --git a/cmd/soroban-cli/src/config/data.rs b/cmd/soroban-cli/src/config/data.rs index 2ffa87613..5b4accb90 100644 --- a/cmd/soroban-cli/src/config/data.rs +++ b/cmd/soroban-cli/src/config/data.rs @@ -202,8 +202,10 @@ fn to_xdr(data: &impl WriteXdr) -> Result { #[cfg(test)] mod test { use super::*; + use serial_test::serial; #[test] + #[serial] fn test_write_read() { let t = assert_fs::TempDir::new().unwrap(); std::env::set_var("STELLAR_DATA_HOME", t.path().to_str().unwrap()); diff --git a/cmd/soroban-cli/src/config/upgrade_check.rs b/cmd/soroban-cli/src/config/upgrade_check.rs index 23db04727..59aa98cf7 100644 --- a/cmd/soroban-cli/src/config/upgrade_check.rs +++ b/cmd/soroban-cli/src/config/upgrade_check.rs @@ -69,13 +69,18 @@ impl UpgradeCheck { #[cfg(test)] mod tests { use super::*; + use serial_test::serial; use std::env; #[test] + #[serial] fn test_upgrade_check_load_save() { - // Set the `XDG_DATA_HOME` environment variable to a temporary directory + // Use `STELLAR_DATA_HOME` (cross-platform, highest priority) so that + // any `STELLAR_DATA_HOME` or `XDG_DATA_HOME` leaked by parallel tests + // cannot shadow our temp dir. let temp_dir = tempfile::tempdir().unwrap(); - env::set_var("XDG_DATA_HOME", temp_dir.path()); + env::remove_var("XDG_DATA_HOME"); + env::set_var("STELLAR_DATA_HOME", temp_dir.path()); // Test default loading let default_check = UpgradeCheck::load().unwrap(); assert_eq!(default_check, UpgradeCheck::default());