Files
2026-07-13 13:12:33 +08:00

70 lines
2.1 KiB
Python

"""Tests for _model_alias and PromptState.label in session_state."""
from __future__ import annotations
from opensquilla.cli.repl.session_state import PromptState, _model_alias
def test_alias_none_returns_ellipsis() -> None:
assert _model_alias(None) == "…"
def test_alias_empty_string_returns_ellipsis() -> None:
assert _model_alias("") == "…"
def test_alias_with_slash_returns_last_segment() -> None:
# "deepseek-v4-flash-20260423" is 26 chars — under 28, no ellipsis
result = _model_alias("deepseek/deepseek-v4-flash-20260423")
assert result == "deepseek-v4-flash-20260423"
assert len(result) == 26
def test_alias_long_segment_is_middle_ellipsized() -> None:
# Build a 40-char tail segment
tail = "a" * 20 + "b" * 20 # 40 chars — over 28
full = f"provider/{tail}"
result = _model_alias(full)
assert result == tail[:12] + "…" + tail[-12:]
assert len(result) == 25 # 12 + 1 + 12
def test_alias_exactly_28_chars_no_ellipsis() -> None:
seg = "x" * 28
result = _model_alias(f"provider/{seg}")
assert result == seg
assert "…" not in result
def test_alias_29_chars_is_ellipsized() -> None:
seg = "x" * 29
result = _model_alias(f"provider/{seg}")
assert "…" in result
assert len(result) == 25 # 12 + 1 + 12
def test_alias_no_slash_returns_whole_string() -> None:
assert _model_alias("gpt-5.1") == "gpt-5.1"
def test_alias_no_slash_long_string_is_ellipsized() -> None:
# 40-char string with no slash — treated as the whole segment
seg = "z" * 40
result = _model_alias(seg)
assert result == seg[:12] + "…" + seg[-12:]
def test_prompt_state_label_uses_alias() -> None:
state = PromptState(model="openai/gpt-5.1", elevated=None)
assert state.label == "[gpt-5.1 normal] you ▸ "
def test_prompt_state_label_none_model() -> None:
state = PromptState(model=None, elevated=None)
assert state.label == "[… normal] you ▸ "
def test_prompt_state_label_elevated_mode() -> None:
state = PromptState(model="anthropic/claude-opus-4", elevated="bypass")
assert state.label == "[claude-opus-4 bypass] you ▸ "