From 32e70a5943d4f28851e9c62707dd5e228e686600 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Wed, 13 Aug 2025 09:15:46 +0400 Subject: [PATCH] test: prevent concurrency issues --- src-tauri/src/group_manager.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src-tauri/src/group_manager.rs b/src-tauri/src/group_manager.rs index b40c4ae..62a758e 100644 --- a/src-tauri/src/group_manager.rs +++ b/src-tauri/src/group_manager.rs @@ -25,16 +25,28 @@ struct GroupsData { pub struct GroupManager { base_dirs: BaseDirs, + data_dir_override: Option, } impl GroupManager { pub fn new() -> Self { Self { base_dirs: BaseDirs::new().expect("Failed to get base directories"), + data_dir_override: std::env::var("DONUTBROWSER_DATA_DIR") + .ok() + .map(PathBuf::from), } } fn get_groups_file_path(&self) -> PathBuf { + if let Some(dir) = &self.data_dir_override { + let mut override_path = dir.clone(); + // Ensure the directory exists before returning the path + let _ = fs::create_dir_all(&override_path); + override_path.push("groups.json"); + return override_path; + } + let mut path = self.base_dirs.data_local_dir().to_path_buf(); path.push(if cfg!(debug_assertions) { "DonutBrowserDev" @@ -194,6 +206,10 @@ mod tests { // Set up a temporary home directory for testing env::set_var("HOME", temp_dir.path()); + // Ensure tests do not conflict by isolating data directory per test instance + let data_override = temp_dir.path().join("donutbrowser_test_data"); + env::set_var("DONUTBROWSER_DATA_DIR", &data_override); + let manager = GroupManager::new(); (manager, temp_dir) }