diff --git a/src-tauri/src/agent_update.rs b/src-tauri/src/agent_update.rs index 6405f71e4..2fe73229d 100644 --- a/src-tauri/src/agent_update.rs +++ b/src-tauri/src/agent_update.rs @@ -4649,10 +4649,10 @@ mod tests { } fn bob_settings(root: &Path) -> SettingsState { - Arc::new(tokio::sync::RwLock::new(AppSettings { + crate::config::settings::new_settings_state(AppSettings { project_paths: vec![root.to_string_lossy().to_string()], ..AppSettings::default() - })) + }) } // --------------------------------------------------------------------- @@ -6444,7 +6444,7 @@ mod tests { agent_auto_update_by_command: BTreeMap::from([("bob-1551-missing".to_string(), true)]), ..AppSettings::default() }; - let settings_state: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let settings_state: SettingsState = crate::config::settings::new_settings_state(settings); let broadcaster = WsBroadcaster::new(); let mut frames_rx = broadcaster.subscribe(); let cache = Arc::new(AgentInstallCache::new()); @@ -6548,7 +6548,7 @@ mod tests { agent_auto_update_by_command: BTreeMap::from([("bob-1551-missing".to_string(), true)]), ..AppSettings::default() }; - let settings_state: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let settings_state: SettingsState = crate::config::settings::new_settings_state(settings); let broadcaster = WsBroadcaster::new(); let mut frames_rx = broadcaster.subscribe(); let cache = Arc::new(AgentInstallCache::new()); diff --git a/src-tauri/src/commands/ac_discovery.rs b/src-tauri/src/commands/ac_discovery.rs index d998d52b4..4ffb3bc41 100644 --- a/src-tauri/src/commands/ac_discovery.rs +++ b/src-tauri/src/commands/ac_discovery.rs @@ -3637,7 +3637,7 @@ mod tests { ); fn archive_command_app(settings: AppSettings) -> ArchiveCommandApp { - let settings_state: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let settings_state: SettingsState = crate::config::settings::new_settings_state(settings); let broadcaster = WsBroadcaster::new(); let receiver = broadcaster.subscribe(); let session_mgr = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); @@ -4733,7 +4733,7 @@ mod tests { project_path: Some(a.clone()), ..Default::default() }; - let state: SettingsState = std::sync::Arc::new(tokio::sync::RwLock::new(settings)); + let state: SettingsState = crate::config::settings::new_settings_state(settings); let disk = || -> Vec { let value: serde_json::Value = serde_json::from_str( @@ -4794,7 +4794,7 @@ mod tests { let project = temp.path().join("project"); let project_text = project.to_string_lossy().to_string(); let state: SettingsState = - std::sync::Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + crate::config::settings::new_settings_state(AppSettings::default()); let hooks = NewProjectTransactionHooks { fail_settings_save: true, ..NewProjectTransactionHooks::default() @@ -4830,7 +4830,7 @@ mod tests { let project = temp.path().join("project"); let project_text = project.to_string_lossy().to_string(); let state: SettingsState = - std::sync::Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + crate::config::settings::new_settings_state(AppSettings::default()); let hooks = NewProjectTransactionHooks { before_final_revalidation: Some(std::sync::Arc::new(|ac_root| { let detached = ac_root.with_extension("ac-detached-after-save"); @@ -4876,7 +4876,7 @@ mod tests { let project = temp.path().join("project"); let project_text = project.to_string_lossy().to_string(); let state: SettingsState = - std::sync::Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + crate::config::settings::new_settings_state(AppSettings::default()); let hooks = NewProjectTransactionHooks { before_final_revalidation: Some(std::sync::Arc::new(|ac_root| { let lock = ac_root.join(crate::config::seed_manifest::SEED_MANIFEST_LOCK_FILENAME); @@ -4928,7 +4928,7 @@ mod tests { project_path: Some(x.clone()), ..Default::default() }; - let state: SettingsState = std::sync::Arc::new(tokio::sync::RwLock::new(settings)); + let state: SettingsState = crate::config::settings::new_settings_state(settings); let err = open_project_inner_with_settings_path(&state, &y, Some(&settings_path)) .await @@ -6937,7 +6937,7 @@ mod tests { ) .expect("write replica config"); } - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(AppSettings { + let settings: SettingsState = crate::config::settings::new_settings_state(AppSettings { agents: vec![crate::config::settings::AgentConfig { preflight: None, preflight_timeout_seconds: None, @@ -6957,7 +6957,7 @@ mod tests { }], project_paths: vec![project.to_string_lossy().to_string()], ..AppSettings::default() - })); + }); let session_mgr = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let clocks: crate::config::coordinator_clocks::CoordinatorClocksState = Arc::new( std::sync::Mutex::new(crate::config::coordinator_clocks::CoordinatorClocks::default()), @@ -7603,10 +7603,10 @@ mod snapshot_refresh_tests { let dir = tempfile::tempdir().unwrap(); let root = dir.path().join(".ac/room-1"); std::fs::create_dir_all(&root).unwrap(); - let settings = Arc::new(tokio::sync::RwLock::new(AppSettings { + let settings = crate::config::settings::new_settings_state(AppSettings { project_paths: vec![dir.path().to_string_lossy().into_owned()], ..Default::default() - })); + }); ( dir, root, diff --git a/src-tauri/src/commands/co_managed.rs b/src-tauri/src/commands/co_managed.rs index 748af0bbf..86d02cc25 100644 --- a/src-tauri/src/commands/co_managed.rs +++ b/src-tauri/src/commands/co_managed.rs @@ -306,7 +306,7 @@ mod tests { ..AppSettings::default() }; tauri::test::mock_builder() - .manage(std::sync::Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .build(tauri::test::mock_context(tauri::test::noop_assets())) .expect("build co-managed test app") } diff --git a/src-tauri/src/commands/config.rs b/src-tauri/src/commands/config.rs index ad3fd86d9..b09753ce4 100644 --- a/src-tauri/src/commands/config.rs +++ b/src-tauri/src/commands/config.rs @@ -4895,7 +4895,11 @@ mod tests { .map(String::as_str), Some("physical-home") ); - (temp, path, Arc::new(RwLock::new(written))) + ( + temp, + path, + crate::config::settings::new_settings_state(written), + ) } fn hash_activation_assert_written( @@ -5166,7 +5170,7 @@ mod tests { } fn state_for(settings: AppSettings) -> SettingsState { - Arc::new(RwLock::new(settings)) + crate::config::settings::new_settings_state(settings) } #[tokio::test] diff --git a/src-tauri/src/commands/entity_creation.rs b/src-tauri/src/commands/entity_creation.rs index c718c6e07..075586ebc 100644 --- a/src-tauri/src/commands/entity_creation.rs +++ b/src-tauri/src/commands/entity_creation.rs @@ -5744,7 +5744,7 @@ mod tests { } fn settings_state(settings: AppSettings) -> SettingsState { - Arc::new(tokio::sync::RwLock::new(settings)) + crate::config::settings::new_settings_state(settings) } fn profile_cell(command: &str) -> crate::config::settings::ProfileCellConfig { diff --git a/src-tauri/src/commands/pty.rs b/src-tauri/src/commands/pty.rs index 91f922776..f9d97609b 100644 --- a/src-tauri/src/commands/pty.rs +++ b/src-tauri/src/commands/pty.rs @@ -1363,7 +1363,7 @@ mod watcher_preview_tests { } fn settings_app(settings: AppSettings) -> tauri::App { - let state: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let state: SettingsState = crate::config::settings::new_settings_state(settings); tauri::test::mock_builder() .manage(state) .build(tauri::test::mock_context(tauri::test::noop_assets())) diff --git a/src-tauri/src/commands/session.rs b/src-tauri/src/commands/session.rs index a5575eae1..546ee72e6 100644 --- a/src-tauri/src/commands/session.rs +++ b/src-tauri/src/commands/session.rs @@ -8059,7 +8059,7 @@ mod tests { store_dir.path().to_path_buf(), ); let mut builder = tauri::test::mock_builder() - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(Arc::new( crate::resource_monitor::ResourceMonitorState::new(), )) @@ -16731,7 +16731,7 @@ pub(crate) mod reader_demand_tests { .to_string_lossy() .into_owned()]; let app = tauri::test::mock_builder() - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(Arc::clone(&manager)) .manage(bridge_state) .manage(OutboundNetwork::new_for_tests(1)) @@ -18909,7 +18909,7 @@ pub(crate) mod co_managed_tests { manager: Arc>, ) -> tauri::App { tauri::test::mock_builder() - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(manager) .build(tauri::test::mock_context(tauri::test::noop_assets())) .expect("build co-managed session test app") diff --git a/src-tauri/src/commands/window.rs b/src-tauri/src/commands/window.rs index f555ee6d0..5c2d9a2d9 100644 --- a/src-tauri/src/commands/window.rs +++ b/src-tauri/src/commands/window.rs @@ -1518,7 +1518,7 @@ mod tests { } fn placement_state(settings: AppSettings) -> SettingsState { - Arc::new(tokio::sync::RwLock::new(settings)) + crate::config::settings::new_settings_state(settings) } fn write_placement_base(path: &std::path::Path, placement: serde_json::Value) { diff --git a/src-tauri/src/config/sessions_persistence.rs b/src-tauri/src/config/sessions_persistence.rs index c89d912e0..9f6f46229 100644 --- a/src-tauri/src/config/sessions_persistence.rs +++ b/src-tauri/src/config/sessions_persistence.rs @@ -4432,7 +4432,7 @@ mod tests { ..AppSettings::default() }; let state: crate::config::settings::SettingsState = - Arc::new(tokio::sync::RwLock::new(settings.clone())); + crate::config::settings::new_settings_state(settings.clone()); let app = tauri::test::mock_builder() .manage(state) .build(tauri::test::mock_context(tauri::test::noop_assets())) diff --git a/src-tauri/src/config/settings.rs b/src-tauri/src/config/settings.rs index 350024382..4b45d614b 100644 --- a/src-tauri/src/config/settings.rs +++ b/src-tauri/src/config/settings.rs @@ -14658,6 +14658,10 @@ fn save_settings_to_path(settings: &AppSettings, path: &Path) -> Result<(), Sett pub type SettingsState = Arc>; +pub fn new_settings_state(settings: AppSettings) -> SettingsState { + Arc::new(RwLock::new(settings)) +} + #[cfg(test)] mod tests { // Each logger scenario runs in its own process. No test installs or changes @@ -19235,7 +19239,8 @@ mod tests { let temp = tempfile::tempdir().unwrap(); let path = seed(temp.path(), Some(&base_fixture()), None); let original = load_settings_from_path(&path); - let state: SettingsState = Arc::new(RwLock::new(original.clone())); + let state: SettingsState = + crate::config::settings::new_settings_state(original.clone()); let before = disk_bytes(temp.path()); for seconds in [0, 3601, 999999] { let mut invalid = original.clone(); @@ -20019,7 +20024,7 @@ mod tests { let original = AppSettings::default(); assert_eq!(original.typing_hold_seconds, 30); let state: super::SettingsState = - std::sync::Arc::new(tokio::sync::RwLock::new(original.clone())); + crate::config::settings::new_settings_state(original.clone()); let mut invalid = original; invalid.typing_hold_seconds = 0; diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 1c70d9715..a512eea3f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -4438,7 +4438,7 @@ pub fn run( // (#621) Snapshot registered project paths for the startup orphan-clock prune // below (taken before the value is moved into the RwLock). let startup_project_paths = loaded_settings.project_paths.clone(); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(loaded_settings)); + let settings: SettingsState = crate::config::settings::new_settings_state(loaded_settings); // #552 persisted coordinator badge clock + auto-closed marker store (loaded // once at startup; flushed by the auto-close tick and on app exit). let coordinator_clocks: crate::config::coordinator_clocks::CoordinatorClocksState = @@ -8592,7 +8592,7 @@ mod tests { fn resolved(settings: AppSettings) -> std::collections::HashMap { let source = ScraperPatterns { - settings: std::sync::Arc::new(tokio::sync::RwLock::new(settings)) as SettingsState, + settings: crate::config::settings::new_settings_state(settings) as SettingsState, }; futures::executor::block_on(source.patterns()) } @@ -9122,7 +9122,8 @@ mod tests { let session_mgr = Arc::new(tokio::sync::RwLock::new( crate::session::manager::SessionManager::new(), )); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + let settings: SettingsState = + crate::config::settings::new_settings_state(AppSettings::default()); let app = crate::test_support::test_builder() .manage(Arc::clone(&settings)) .build(tauri::test::mock_context(tauri::test::noop_assets())) @@ -9736,7 +9737,7 @@ mod tests { let registry = Arc::new(CaptureRegistry::new()); let idle_detector = crate::pty::idle_detector::IdleDetector::new(|_| {}, |_| {}); let app = tauri::test::mock_builder() - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(session_manager.clone()) .manage(crate::network::OutboundNetwork::new().expect("shared outbound network")) .manage(registry.clone()) @@ -12520,7 +12521,7 @@ mod tests { )); let idle_detector = crate::pty::idle_detector::IdleDetector::new(|_| {}, |_| {}); let app = tauri::test::mock_builder() - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(manager.clone()) .manage(crate::network::OutboundNetwork::new().expect("shared outbound network")) .manage(registry.clone()) diff --git a/src-tauri/src/loops/delivery.rs b/src-tauri/src/loops/delivery.rs index 5b9f7dcfa..182440188 100644 --- a/src-tauri/src/loops/delivery.rs +++ b/src-tauri/src/loops/delivery.rs @@ -1600,7 +1600,9 @@ mod tests { crate::test_support::test_builder() .manage(Arc::clone(&session_mgr)) .manage(pty_mgr) - .manage(Arc::new(tokio::sync::RwLock::new(AppSettings::default()))) + .manage(crate::config::settings::new_settings_state( + AppSettings::default(), + )) .manage(coordinator) .build(tauri::test::mock_context(tauri::test::noop_assets())) .expect("build loop delivery app") @@ -1639,7 +1641,7 @@ mod tests { ); let pty_mgr = Arc::new(Mutex::new(PtyManager::new_for_test(backend))); let app = crate::test_support::test_builder() - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(Arc::new( crate::resource_monitor::ResourceMonitorState::new(), )) diff --git a/src-tauri/src/phone/mailbox.rs b/src-tauri/src/phone/mailbox.rs index ef2027d81..2c40d245b 100644 --- a/src-tauri/src/phone/mailbox.rs +++ b/src-tauri/src/phone/mailbox.rs @@ -15319,7 +15319,7 @@ mod tests { .to_string_lossy() .to_string(), )) - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(session_mgr.clone()) .manage(pty_mgr) // #885 E-3: real PtyManager for pty_live probes .manage(Arc::new(tokio::sync::Mutex::new( @@ -30183,7 +30183,7 @@ mod tests { .to_string_lossy() .to_string(), )) - .manage(Arc::new(tokio::sync::RwLock::new(settings))) + .manage(crate::config::settings::new_settings_state(settings)) .manage(session_mgr.clone()) .manage(pty_mgr) .manage(telegram) diff --git a/src-tauri/src/pty/inject.rs b/src-tauri/src/pty/inject.rs index d782cd188..682dfe36c 100644 --- a/src-tauri/src/pty/inject.rs +++ b/src-tauri/src/pty/inject.rs @@ -1540,9 +1540,10 @@ mod tests { pty.lock() .unwrap() .record_route(id, SessionBackendKind::LocalProcess); - let settings_state: crate::config::settings::SettingsState = Arc::new( - tokio::sync::RwLock::new(crate::config::settings::AppSettings::default()), - ); + let settings_state: crate::config::settings::SettingsState = + crate::config::settings::new_settings_state( + crate::config::settings::AppSettings::default(), + ); let app = tauri::test::mock_builder() .manage(session_manager) .manage(pty) @@ -1582,9 +1583,10 @@ mod tests { pty.lock() .unwrap() .record_route(id, SessionBackendKind::LocalProcess); - let settings_state: crate::config::settings::SettingsState = Arc::new( - tokio::sync::RwLock::new(crate::config::settings::AppSettings::default()), - ); + let settings_state: crate::config::settings::SettingsState = + crate::config::settings::new_settings_state( + crate::config::settings::AppSettings::default(), + ); let app = tauri::test::mock_builder() .manage(session_manager) .manage(pty) diff --git a/src-tauri/src/pty/remote_watcher.rs b/src-tauri/src/pty/remote_watcher.rs index 0718628ef..fc169fb10 100644 --- a/src-tauri/src/pty/remote_watcher.rs +++ b/src-tauri/src/pty/remote_watcher.rs @@ -2838,7 +2838,7 @@ mod tests { Arc::new(move || *publication_value.lock().unwrap_or_else(|e| e.into_inner())) }; - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let settings: SettingsState = crate::config::settings::new_settings_state(settings); let sessions = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (sweeper, transitions) = RemoteSweeper::with_capacity( sessions, @@ -5383,7 +5383,8 @@ mod tests { }; let local_git: LocalGitRunner = Arc::new(|_path, _args| Box::pin(async { Err("unused".to_string()) })); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + let settings: SettingsState = + crate::config::settings::new_settings_state(AppSettings::default()); let sessions = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (sweeper, _receiver) = RemoteSweeper::new( sessions, @@ -5428,7 +5429,8 @@ mod tests { }; let local_git: LocalGitRunner = Arc::new(|_path, _args| Box::pin(async { Err("unused".to_string()) })); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + let settings: SettingsState = + crate::config::settings::new_settings_state(AppSettings::default()); let sessions = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (sweeper, _receiver) = RemoteSweeper::new( sessions, @@ -5490,7 +5492,7 @@ mod tests { branch_staleness_enabled: false, ..AppSettings::default() }; - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let settings: SettingsState = crate::config::settings::new_settings_state(settings); let sessions = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (sweeper, _receiver) = RemoteSweeper::new( sessions, diff --git a/src-tauri/src/pty/terminal_snapshot/acceptance_tests.rs b/src-tauri/src/pty/terminal_snapshot/acceptance_tests.rs index 03595a56f..5c06893c7 100644 --- a/src-tauri/src/pty/terminal_snapshot/acceptance_tests.rs +++ b/src-tauri/src/pty/terminal_snapshot/acceptance_tests.rs @@ -379,7 +379,7 @@ impl AcceptanceFixture { ..Default::default() }; let settings: crate::config::settings::SettingsState = - Arc::new(tokio::sync::RwLock::new(app_settings)); + crate::config::settings::new_settings_state(app_settings); let manager = SessionManager::new(); let host_coordinator = create_session( diff --git a/src-tauri/src/resource_monitor/watchdog.rs b/src-tauri/src/resource_monitor/watchdog.rs index fe04b5640..282c467f2 100644 --- a/src-tauri/src/resource_monitor/watchdog.rs +++ b/src-tauri/src/resource_monitor/watchdog.rs @@ -559,7 +559,7 @@ mod tests { resource_monitor_enabled: true, ..AppSettings::default() }; - let settings = Arc::new(tokio::sync::RwLock::new(cfg)); + let settings = crate::config::settings::new_settings_state(cfg); let manager = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let coordinator = SelectionCoordinator::new(manager, CancellationToken::new()); let shutdown = ShutdownSignal::new(); @@ -895,7 +895,7 @@ mod tests { // The public row never existed, so the coordinator can only answer NoPublicSession. let manager = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (_app, coordinator) = running_coordinator(manager, Arc::clone(&monitor)).await; - let settings = Arc::new(tokio::sync::RwLock::new(cfg)); + let settings = crate::config::settings::new_settings_state(cfg); run_tick(&monitor, &settings, &coordinator).await; @@ -935,7 +935,7 @@ mod tests { let manager = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (_app, coordinator) = running_coordinator(manager, Arc::clone(&monitor)).await; - let settings = Arc::new(tokio::sync::RwLock::new(cfg)); + let settings = crate::config::settings::new_settings_state(cfg); // Phase 1: kill_started_at was set microseconds ago by the setup's kill_group, so // the 15s backoff cannot have elapsed and the gate must skip this group. @@ -1025,7 +1025,7 @@ mod tests { let manager = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (_app, coordinator) = running_coordinator(manager, Arc::clone(&monitor)).await; - let settings = Arc::new(tokio::sync::RwLock::new(cfg)); + let settings = crate::config::settings::new_settings_state(cfg); run_tick(&monitor, &settings, &coordinator).await; @@ -1170,7 +1170,7 @@ mod tests { let group_limits = ResourceLimits::from(&cfg); let manager = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let (_app, coordinator) = running_coordinator(manager, Arc::clone(&monitor)).await; - let settings = Arc::new(tokio::sync::RwLock::new(cfg)); + let settings = crate::config::settings::new_settings_state(cfg); for cycle in 0..3u32 { let session_id = Uuid::new_v4(); diff --git a/src-tauri/src/session/auto_close.rs b/src-tauri/src/session/auto_close.rs index 07568bfbb..94371d294 100644 --- a/src-tauri/src/session/auto_close.rs +++ b/src-tauri/src/session/auto_close.rs @@ -1012,7 +1012,7 @@ mod tests { coordinator_auto_close_skip_telegram_assigned: false, ..AppSettings::default() }; - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new(settings)); + let settings: SettingsState = crate::config::settings::new_settings_state(settings); let clocks = Arc::new(Mutex::new(CoordinatorClocks::default())); clocks.lock().unwrap().note_user_message( "myproj:wg-1-team/lead", diff --git a/src-tauri/src/update_check.rs b/src-tauri/src/update_check.rs index 02d51ae3e..509796aad 100644 --- a/src-tauri/src/update_check.rs +++ b/src-tauri/src/update_check.rs @@ -826,7 +826,7 @@ mod tests { settings: crate::config::settings::AppSettings, ) -> tauri::App { let state: crate::config::settings::SettingsState = - Arc::new(tokio::sync::RwLock::new(settings)); + crate::config::settings::new_settings_state(settings); tauri::test::mock_builder() .manage(state) .manage(crate::network::OutboundNetwork::new_for_tests(4)) diff --git a/src-tauri/src/web/commands.rs b/src-tauri/src/web/commands.rs index 43222fff4..7adcc7eec 100644 --- a/src-tauri/src/web/commands.rs +++ b/src-tauri/src/web/commands.rs @@ -1528,7 +1528,7 @@ mod tests { Some(broadcaster.clone()), None, ))); - let settings = Arc::new(tokio::sync::RwLock::new(AppSettings::default())); + let settings = crate::config::settings::new_settings_state(AppSettings::default()); let state = WsState { session_mgr, pty_mgr, @@ -1602,7 +1602,7 @@ mod tests { Some(broadcaster.clone()), None, ))); - let settings = Arc::new(tokio::sync::RwLock::new(settings)); + let settings = crate::config::settings::new_settings_state(settings); let state = WsState { session_mgr, pty_mgr, @@ -1918,7 +1918,7 @@ title: 'USER: café' let temp = tempfile::tempdir().expect("tempdir"); let settings = overlay_owned_agents_settings(temp.path()); let settings_state: crate::config::settings::SettingsState = - Arc::new(tokio::sync::RwLock::new(settings)); + crate::config::settings::new_settings_state(settings); let app = tauri::test::mock_builder() .invoke_handler(tauri::generate_handler![ crate::commands::config::move_coding_agent @@ -2062,7 +2062,7 @@ title: 'USER: café' let settings = overlay_owned_agents_settings(temp.path()); let overlay_order: Vec = settings.agents.iter().map(|a| a.id.clone()).collect(); let settings_state: crate::config::settings::SettingsState = - Arc::new(tokio::sync::RwLock::new(settings)); + crate::config::settings::new_settings_state(settings); let app = tauri::test::mock_builder() .invoke_handler(tauri::generate_handler![ crate::commands::config::reorder_coding_agent @@ -2475,7 +2475,7 @@ title: 'USER: café' let (_temp, replica, settings) = selection_lock_web_fixture(true); let replica_text = replica.to_string_lossy().to_string(); let settings_state: crate::config::settings::SettingsState = - Arc::new(tokio::sync::RwLock::new(settings)); + crate::config::settings::new_settings_state(settings); let session_mgr = Arc::new(tokio::sync::RwLock::new(SessionManager::new())); let app = tauri::test::mock_builder() .invoke_handler(tauri::generate_handler![ @@ -2773,7 +2773,7 @@ title: 'USER: café' Arc::clone(&session_mgr), shutdown.token().clone(), ); - let settings = Arc::new(tokio::sync::RwLock::new(settings)); + let settings = crate::config::settings::new_settings_state(settings); let full_app = crate::test_support::test_builder() .manage(settings.clone()) @@ -3054,7 +3054,7 @@ title: 'USER: café' let state = WsState { session_mgr, pty_mgr, - settings: Arc::new(tokio::sync::RwLock::new(settings)), + settings: crate::config::settings::new_settings_state(settings), broadcaster, app_handle, }; diff --git a/src-tauri/tests/pty_lifecycle_regression.rs b/src-tauri/tests/pty_lifecycle_regression.rs index 0e9e23dce..f36744c9a 100644 --- a/src-tauri/tests/pty_lifecycle_regression.rs +++ b/src-tauri/tests/pty_lifecycle_regression.rs @@ -331,13 +331,13 @@ fn make_test_app( TelegramBridgeManager::new(Arc::clone(&output_senders)), )); let idle_detector = IdleDetector::new(|_| {}, |_| {}); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new({ + let settings: SettingsState = agentscommander_lib::config::settings::new_settings_state({ let mut s = AppSettings::default(); s.default_shell = "powershell.exe".to_string(); s.default_shell_args = vec!["-NoLogo".to_string()]; s.project_paths = vec![path_to_string(repo_root)]; s - })); + }); let git_app = Box::leak(Box::new( tauri::Builder::default() .any_thread() diff --git a/src-tauri/tests/pty_powershell_managed_native.rs b/src-tauri/tests/pty_powershell_managed_native.rs index 9bd0e2f2d..87edd5404 100644 --- a/src-tauri/tests/pty_powershell_managed_native.rs +++ b/src-tauri/tests/pty_powershell_managed_native.rs @@ -284,13 +284,13 @@ fn make_fixture() -> Fixture { TelegramBridgeManager::new(Arc::clone(&output_senders)), )); let idle_detector = IdleDetector::new(|_| {}, |_| {}); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new({ + let settings: SettingsState = agentscommander_lib::config::settings::new_settings_state({ let mut s = AppSettings::default(); s.default_shell = "powershell.exe".to_string(); s.default_shell_args = vec!["-NoLogo".to_string()]; s.project_paths = vec![repo_root.to_string_lossy().to_string()]; s - })); + }); let git_app = Box::leak(Box::new( agentscommander_lib::test_support::test_builder() .build(tauri::test::mock_context(tauri::test::noop_assets())) diff --git a/src-tauri/tests/wake_consumption_measure.rs b/src-tauri/tests/wake_consumption_measure.rs index c6004b587..d0fac5908 100644 --- a/src-tauri/tests/wake_consumption_measure.rs +++ b/src-tauri/tests/wake_consumption_measure.rs @@ -196,14 +196,14 @@ fn make_ctx(repo_root: &Path) -> HarnessCtx { // No-op callbacks: signal 1 is read from the detector's idle_set via // purge_readiness, so we do not need to mirror into SessionManager here. let idle: Arc = IdleDetector::new(|_| {}, |_| {}); - let settings: SettingsState = Arc::new(tokio::sync::RwLock::new({ + let settings: SettingsState = agentscommander_lib::config::settings::new_settings_state({ // #1077: AppSettings has a crate-private hidden field; build from Default. let mut s = AppSettings::default(); s.default_shell = "powershell.exe".to_string(); s.default_shell_args = vec!["-NoLogo".to_string()]; s.project_paths = vec![repo_root.to_string_lossy().to_string()]; s - })); + }); let git_app = Box::leak(Box::new( agentscommander_lib::test_support::test_builder() .build(tauri::test::mock_context(tauri::test::noop_assets()))