/ tests / cli / test_cli_retry.py
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 == []