"""Tests for CLI manual compression messaging.""" from unittest.mock import MagicMock, patch from tests.cli.test_cli_init import _make_cli def _make_history() -> list[dict[str, str]]: return [ {"role": "user", "content": "one"}, {"role": "assistant", "content": "two"}, {"role": "user", "content": "three"}, {"role": "assistant", "content": "four"}, ] def test_manual_compress_reports_noop_without_success_banner(capsys): shell = _make_cli() history = _make_history() shell.conversation_history = history shell.agent = MagicMock() shell.agent.compression_enabled = True shell.agent._cached_system_prompt = "" shell.agent._compress_context.return_value = (list(history), "") def _estimate(messages): assert messages == history return 100 with patch("agent.model_metadata.estimate_messages_tokens_rough", side_effect=_estimate): shell._manual_compress() output = capsys.readouterr().out assert "No changes from compression" in output assert "✅ Compressed" not in output assert "Rough transcript estimate: ~100 tokens (unchanged)" in output def test_manual_compress_explains_when_token_estimate_rises(capsys): shell = _make_cli() history = _make_history() compressed = [ history[0], {"role": "assistant", "content": "Dense summary that still counts as more tokens."}, history[-1], ] shell.conversation_history = history shell.agent = MagicMock() shell.agent.compression_enabled = True shell.agent._cached_system_prompt = "" shell.agent._compress_context.return_value = (compressed, "") def _estimate(messages): if messages == history: return 100 if messages == compressed: return 120 raise AssertionError(f"unexpected transcript: {messages!r}") with patch("agent.model_metadata.estimate_messages_tokens_rough", side_effect=_estimate): shell._manual_compress() output = capsys.readouterr().out assert "✅ Compressed: 4 → 3 messages" in output assert "Rough transcript estimate: ~100 → ~120 tokens" in output assert "denser summaries" in output