diff --git a/rust/crates/runtime/src/session_control.rs b/rust/crates/runtime/src/session_control.rs index 561da6ca..7fac1005 100644 --- a/rust/crates/runtime/src/session_control.rs +++ b/rust/crates/runtime/src/session_control.rs @@ -606,7 +606,8 @@ mod tests { create_managed_session_handle_for, delete_managed_session_for, fork_managed_session_for, is_session_reference_alias, list_managed_sessions_for, load_managed_session_for, managed_session_exists_for, resolve_session_reference_for, workspace_fingerprint, - ManagedSessionSummary, SessionControlError, SessionStore, LATEST_SESSION_REFERENCE, + ManagedSessionSummary, SessionControlError, SessionStore, + LATEST_SESSION_REFERENCE, }; use crate::session::Session; use std::fs; @@ -1030,6 +1031,33 @@ mod tests { fs::remove_dir_all(base).expect("temp dir should clean up"); } + + #[test] + fn session_exists_and_delete_are_scoped_to_workspace_store() { + // given + let base = temp_dir(); + fs::create_dir_all(&base).expect("base dir should exist"); + let store = SessionStore::from_cwd(&base).expect("store should build"); + let session = persist_session_via_store(&store, "delete me"); + + // when + assert!( + managed_session_exists_for(&base, &session.session_id).expect("exists should run"), + "persisted session should exist before deletion" + ); + let deleted = + delete_managed_session_for(&base, &session.session_id).expect("delete should succeed"); + + // then + assert_eq!(deleted.id, session.session_id); + assert!(!deleted.path.exists(), "session file should be removed"); + assert!( + !managed_session_exists_for(&base, &session.session_id).expect("exists should run"), + "deleted session should not exist" + ); + fs::remove_dir_all(base).expect("temp dir should clean up"); + } + #[test] fn session_exists_and_delete_are_scoped_to_workspace_store() { // given