done []chan error
}
-func (r *DaemonMessageTest) Start(t *testing.T, indices ...int) {
+func newDaemonMessageTest(t *testing.T, dir string, server *ModelFake) *DaemonMessageTest {
t.Helper()
- ctx, cancel := context.WithCancel(t.Context())
- r.cancel = cancel
- for _, index := range indices {
- done := make(chan error, 1)
- r.done = append(r.done, done)
- go func() {
- done <- r.loops[index].Run(ctx)
- }()
+ _, err := os.Stat(filepath.Join(dir, daemonAgentDirName, "children"))
+ if errors.Is(err, os.ErrNotExist) {
+ daemonChildConfig(t, dir, "Garden")
+ daemonChildConfig(t, dir, "Library")
+ } else {
+ require.NoError(t, err)
}
-}
-func (r *DaemonMessageTest) Queue(t *testing.T) DaemonMessageFile {
- t.Helper()
+ test := &DaemonMessageTest{
+ logs: &SyncBuffer{},
+ }
- data, err := os.ReadFile(r.messages.path)
+ test.agents, err = openDaemonAgents(t.Context(), dir, server.URL, ModelAPIKey(modelTestKey), defaultConfig().Compactor, newTestClock().Now, daemonTestLogger(test.logs))
require.NoError(t, err)
+ t.Cleanup(func() {
+ test.Close(t)
+ })
- var file DaemonMessageFile
+ for _, agent := range test.agents {
+ events := &TurnEventRecorder{}
+ loop, err := agent.Loop(nil, events.Add)
+ require.NoError(t, err)
- require.NoError(t, json.Unmarshal(data, &file))
+ test.events = append(test.events, events)
+ test.loops = append(test.loops, loop)
+ }
- return file
+ test.messages, err = openDaemonMessages(test.loops)
+ require.NoError(t, err)
+
+ return test
}
func (r *DaemonMessageTest) Close(t *testing.T) {
r.agents = nil
}
-func newDaemonMessageTest(t *testing.T, dir string, server *ModelFake) *DaemonMessageTest {
+func (r *DaemonMessageTest) Start(t *testing.T, indices ...int) {
t.Helper()
- _, err := os.Stat(filepath.Join(dir, daemonAgentDirName, "children"))
- if errors.Is(err, os.ErrNotExist) {
- daemonChildConfig(t, dir, "Garden")
- daemonChildConfig(t, dir, "Library")
- } else {
- require.NoError(t, err)
+ ctx, cancel := context.WithCancel(t.Context())
+ r.cancel = cancel
+ for _, index := range indices {
+ done := make(chan error, 1)
+ r.done = append(r.done, done)
+ go func() {
+ done <- r.loops[index].Run(ctx)
+ }()
}
+}
- test := &DaemonMessageTest{
- logs: &SyncBuffer{},
- }
- test.agents, err = openDaemonAgents(t.Context(), dir, server.URL, ModelAPIKey(modelTestKey), defaultConfig().Compactor, newTestClock().Now, daemonTestLogger(test.logs))
- require.NoError(t, err)
- t.Cleanup(func() {
- test.Close(t)
- })
+func (r *DaemonMessageTest) Queue(t *testing.T) DaemonMessageFile {
+ t.Helper()
- for _, agent := range test.agents {
- events := &TurnEventRecorder{}
- loop, err := agent.Loop(nil, events.Add)
- require.NoError(t, err)
+ data, err := os.ReadFile(r.messages.path)
+ require.NoError(t, err)
- test.events = append(test.events, events)
- test.loops = append(test.loops, loop)
- }
+ var file DaemonMessageFile
- test.messages, err = openDaemonMessages(test.loops)
- require.NoError(t, err)
+ require.NoError(t, json.Unmarshal(data, &file))
- return test
+ return file
}