diff --git a/hermes_cli/sessions_cmd.py b/hermes_cli/sessions_cmd.py index a1916f5b3b..3b5133ec2a 100644 --- a/hermes_cli/sessions_cmd.py +++ b/hermes_cli/sessions_cmd.py @@ -950,9 +950,11 @@ def cmd_sessions(args, sessions_parser=None): except Exception as e: print(f"Error: Could not open session database: {e}") return 1 - with db: + try: handler = _DB_HANDLERS.get(action) if handler is None: sessions_parser.print_help() return return handler(db, args) + finally: + db.close() diff --git a/tests/hermes_cli/test_sessions_delete.py b/tests/hermes_cli/test_sessions_delete.py index 7650a9bbef..53acbfa8d2 100644 --- a/tests/hermes_cli/test_sessions_delete.py +++ b/tests/hermes_cli/test_sessions_delete.py @@ -14,6 +14,9 @@ def test_sessions_delete_accepts_unique_id_prefix(monkeypatch, capsys): captured["resolved_from"] = session_id return "20260315_092437_c9a6ff" + def get_session(self, session_id): + return {"id": session_id, "pinned": 0} + def delete_session(self, session_id, **kwargs): captured["deleted"] = session_id return True @@ -78,6 +81,9 @@ def _run_prune(monkeypatch, capsys, argv_tail, candidates=None, skipped_open=0): assert kwargs == seen return skipped_open + def count_prune_matches(self, **kwargs): + return len(rows) + def prune_sessions(self, **kwargs): return len(rows)