X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/e0ab6220b6fd35f7e92a04e4bf149940185713ab..697c662a48c87ee9be136358129c1f79f4f5a72f:/turn_test.go diff --git a/turn_test.go b/turn_test.go index b8c92dc..f1295e9 100644 --- a/turn_test.go +++ b/turn_test.go @@ -59,6 +59,13 @@ func TestTurnRunsToolsUntilTheFinalAnswer(t *testing.T) { "reply: It said hi.", }, test.Log(t)) require.Equal(t, []string{"user", "busy", "tool", "echo", "reply", "idle"}, test.events.Kinds()) + + var turns []string + for _, record := range readUsage(t, test.usagePath) { + turns = append(turns, record.Turn) + } + + require.Equal(t, []string{"first", "next"}, turns) } func TestFirstRequestHoldsTheViewTheStateAndTheMessage(t *testing.T) { @@ -149,7 +156,7 @@ func TestTurnWaitsForTheSummaries(t *testing.T) { server := newFakeResponses(t) summarizer := newFakeSummarizer() summarizer.gate = make(chan struct{}) - test := newTestLoopWith(t, server, summarizer, false) + test := newTestLoopWith(t, server, summarizer) _, err := test.memory.Append("echo", strings.Repeat("long output ", 100)) require.NoError(t, err) @@ -237,52 +244,6 @@ func TestViewMessagesOnlyGrowBetweenTurns(t *testing.T) { }, inputTexts(t, server.Call(2))) } -func TestWarmUpEndsWhereTheNextTurnReadsTheCache(t *testing.T) { - server := newFakeResponses(t) - server.reply = func(w http.ResponseWriter, call fakeCall) { - if call.number == 1 { - writeEvents(w, map[string]any{"type": "response.output_item.added", "item": reasoningItem("rs_1", "")}) - return - } - - writeEvents(w, completedEvent([]any{messageItem("answer")}, 100, 0, 5)) - } - - test := newTestLoopWith(t, server, newFakeSummarizer(), true) - _, err := test.loop.Submit("one") - require.NoError(t, err) - require.Eventually(t, func() bool { - return server.Calls() == 2 - }, 10*time.Second, time.Millisecond) - - _, err = test.loop.Submit("two") - require.NoError(t, err) - test.events.WaitFor(t, "idle", 2) - require.Eventually(t, func() bool { - return server.Calls() == 4 - }, 10*time.Second, time.Millisecond) - - warmUp := server.Call(1).body - require.Equal(t, server.Call(0).body["instructions"], warmUp["instructions"]) - require.Equal(t, server.Call(0).body["tools"], warmUp["tools"]) - require.Equal(t, []string{"\n", "0+1|user: one\n1+1|reply: answer\n"}, inputTexts(t, server.Call(1))) - - // The next turn begins with the whole warm-up, so its message end after - // the view is the end of the warm-up entry. - warmInput := warmUp["input"].([]any) - turnInput := server.Call(2).body["input"].([]any) - require.Equal(t, warmInput, turnInput[:len(warmInput)]) - require.Equal(t, "\n\nNow: Thursday 2026-01-01 12:00 +00:00", inputTexts(t, server.Call(2))[len(warmInput)]) - - turns := []string{} - for _, record := range readUsage(t, test.usagePath) { - turns = append(turns, record.Turn) - } - - require.Equal(t, []string{"first", "warmup", "first", "warmup"}, turns) - require.Equal(t, []string{"user: one", "reply: answer", "user: two", "reply: answer"}, test.Log(t)) -} - // testLoop is a loop that runs in the background of a test, with its parts. type testLoop struct { agent *Agent @@ -369,13 +330,12 @@ func (r *eventRecorder) WaitFor(t *testing.T, kind string, count int) { func newTestLoop(t *testing.T, server *fakeResponses) *testLoop { t.Helper() - return newTestLoopWith(t, server, newFakeSummarizer(), false) + return newTestLoopWith(t, server, newFakeSummarizer()) } // newTestLoopWith returns a running loop on a new agent whose builds use -// summarizer and whose commands run in a temporary directory. warmUp turns the -// warm-up on. -func newTestLoopWith(t *testing.T, server *fakeResponses, summarizer Summarizer, warmUp bool) *testLoop { +// summarizer and whose commands run in a temporary directory. +func newTestLoopWith(t *testing.T, server *fakeResponses, summarizer Summarizer) *testLoop { t.Helper() agent, err := openAgent(t.TempDir()) @@ -396,8 +356,6 @@ func newTestLoopWith(t *testing.T, server *fakeResponses, summarizer Summarizer, client := newClient(server.URL, apiKey(testKey), agent.CacheKey(), test.usagePath) test.loop, err = newLoop(agent, memory, client, clock.Now, test.events.Add) require.NoError(t, err) - - test.loop.warmUp = warmUp ctx, cancel := context.WithCancel(t.Context()) done := make(chan error) go func() {