package main import ( "context" "path/filepath" "testing" "github.com/stretchr/testify/require" ) // daemonStartTestWithBot is daemonStartTest with bot, which can be nil. func daemonStartTestWithBot(t *testing.T, server *ModelFake, bot *TelegramBot) string { t.Helper() dir := t.TempDir() agent, err := openAgent(filepath.Join(dir, daemonAgentDirName)) require.NoError(t, err) agent.config.Workdir = t.TempDir() clock := newTestClock() memory, err := openMemory(t.Context(), agent.dir, clock.Now, newFakeSummarizer()) require.NoError(t, err) socket := filepath.Join(dir, socketFileName) listener, err := daemonListenSocket(socket) require.NoError(t, err) client := newModelClient(server.URL, ModelAPIKey(modelTestKey), agent.CacheKey(), filepath.Join(agent.dir, "usage.jsonl")) ctx, cancel := context.WithCancel(t.Context()) done := make(chan error) go func() { done <- daemonServe(ctx, listener, bot, func(notify func(Event)) (*TurnLoop, error) { return newTurnLoop(agent, memory, newTestSubagents(t), client, clock.Now, notify) }) }() t.Cleanup(func() { cancel() require.NoError(t, <-done) require.NoError(t, memory.Close()) }) return socket }