diff --git a/crates/weft-appd/src/main.rs b/crates/weft-appd/src/main.rs index 11fb168..c9e54ec 100644 --- a/crates/weft-appd/src/main.rs +++ b/crates/weft-appd/src/main.rs @@ -66,6 +66,7 @@ impl SessionRegistry { fn running_sessions(&self) -> Vec { self.sessions .iter() + .filter(|(_, e)| !matches!(e.state, AppStateKind::Stopped)) .map(|(&session_id, e)| SessionInfo { session_id, app_id: e.app_id.clone(), @@ -462,6 +463,17 @@ mod tests { assert!(matches!(resp, Response::Error { .. })); } + #[tokio::test] + async fn running_sessions_excludes_stopped() { + let reg = make_registry(); + let session_id = reg.lock().await.launch("com.test.app"); + reg.lock() + .await + .set_state(session_id, AppStateKind::Stopped); + let sessions = reg.lock().await.running_sessions(); + assert!(sessions.is_empty()); + } + #[tokio::test] async fn dispatch_query_running_lists_active_sessions() { let reg = make_registry();