- agent, err := openAgent(t.TempDir())
- require.NoError(t, err)
-
- agent.config.Workdir = t.TempDir()
- clock := newTestClock()
- memory, err := openMemory(t.Context(), t.TempDir(), clock.Now, summarizer)
- require.NoError(t, err)
-
- test := &testLoop{
- agent: agent,
- memory: memory,
- events: &eventRecorder{},
- usagePath: filepath.Join(t.TempDir(), "usage.jsonl"),
- }
-
- 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)
- ctx, cancel := context.WithCancel(t.Context())
- done := make(chan error)
- go func() {
- done <- test.loop.Run(ctx)
- }()
-
- t.Cleanup(func() {
- cancel()
- require.True(t, errors.Is(<-done, context.Canceled))
- require.NoError(t, memory.Close())
- })
-
- return test