| """Regression tests for CLI /retry history replacement semantics.""" | |
| from tests.test_cli_init import _make_cli | |
| def test_retry_last_truncates_history_before_requeueing_message(): | |
| cli = _make_cli() | |
| cli.conversation_history = [ | |
| {"role": "user", "content": "first"}, | |
| {"role": "assistant", "content": "one"}, | |
| {"role": "user", "content": "retry me"}, | |
| {"role": "assistant", "content": "old answer"}, | |
| ] | |
| retry_msg = cli.retry_last() | |
| assert retry_msg == "retry me" | |
| assert cli.conversation_history == [ | |
| {"role": "user", "content": "first"}, | |
| {"role": "assistant", "content": "one"}, | |
| ] | |
| cli.conversation_history.append({"role": "user", "content": retry_msg}) | |
| cli.conversation_history.append({"role": "assistant", "content": "new answer"}) | |
| assert [m["content"] for m in cli.conversation_history if m["role"] == "user"] == [ | |
| "first", | |
| "retry me", | |
| ] | |
| def test_process_command_retry_requeues_original_message_not_retry_command(): | |
| cli = _make_cli() | |
| queued = [] | |
| class _Queue: | |
| def put(self, value): | |
| queued.append(value) | |
| cli._pending_input = _Queue() | |
| cli.conversation_history = [ | |
| {"role": "user", "content": "retry me"}, | |
| {"role": "assistant", "content": "old answer"}, | |
| ] | |
| cli.process_command("/retry") | |
| assert queued == ["retry me"] | |
| assert cli.conversation_history == [] | |