Files
hermes-webui/tests/test_default_personality.py
T

49 lines
1.7 KiB
Python

"""Regression coverage for display.personality not becoming durable session state.
Issue #2845: display.personality is a display/default hint, but new_session()
previously copied it into Session.personality. That made cosmetic config durable
per-session state and could override profile-scoped behavior later. Only an
explicit /api/personality/set call should persist Session.personality.
"""
from unittest.mock import patch
def test_new_session_does_not_inherit_display_personality_from_config():
"""display.personality='taleb' must not stamp Session.personality."""
import api.models as m
import api.config as cfg_mod
cfg = {
"display": {"personality": "taleb"},
"agent": {"personalities": {"taleb": {"system_prompt": "Be like Taleb", "tone": "blunt"}}},
}
with patch.object(cfg_mod, "get_config", return_value=cfg), \
patch.object(m.Session, "save", return_value=None):
s = m.new_session(workspace="/tmp/test-personality")
try:
assert s.personality is None
finally:
with m.LOCK:
m.SESSIONS.pop(s.session_id, None)
def test_new_session_still_defaults_to_no_personality_when_config_missing():
"""Missing display.personality continues to produce personality=None."""
import api.models as m
import api.config as cfg_mod
cfg = {"agent": {"personalities": {}}}
with patch.object(cfg_mod, "get_config", return_value=cfg), \
patch.object(m.Session, "save", return_value=None):
s = m.new_session(workspace="/tmp/test-personality-missing")
try:
assert s.personality is None
finally:
with m.LOCK:
m.SESSIONS.pop(s.session_id, None)