test_cli_retry.py
1 """Regression tests for CLI /retry history replacement semantics.""" 2 3 from tests.cli.test_cli_init import _make_cli 4 5 6 def test_retry_last_truncates_history_before_requeueing_message(): 7 cli = _make_cli() 8 cli.conversation_history = [ 9 {"role": "user", "content": "first"}, 10 {"role": "assistant", "content": "one"}, 11 {"role": "user", "content": "retry me"}, 12 {"role": "assistant", "content": "old answer"}, 13 ] 14 15 retry_msg = cli.retry_last() 16 17 assert retry_msg == "retry me" 18 assert cli.conversation_history == [ 19 {"role": "user", "content": "first"}, 20 {"role": "assistant", "content": "one"}, 21 ] 22 23 cli.conversation_history.append({"role": "user", "content": retry_msg}) 24 cli.conversation_history.append({"role": "assistant", "content": "new answer"}) 25 26 assert [m["content"] for m in cli.conversation_history if m["role"] == "user"] == [ 27 "first", 28 "retry me", 29 ] 30 31 32 def test_process_command_retry_requeues_original_message_not_retry_command(): 33 cli = _make_cli() 34 queued = [] 35 36 class _Queue: 37 def put(self, value): 38 queued.append(value) 39 40 cli._pending_input = _Queue() 41 cli.conversation_history = [ 42 {"role": "user", "content": "retry me"}, 43 {"role": "assistant", "content": "old answer"}, 44 ] 45 46 cli.process_command("/retry") 47 48 assert queued == ["retry me"] 49 assert cli.conversation_history == []