X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/000ae97acb21a1c0c90e9278177a74411ba6eab2..c781f79f3c8cb9a7577ee1574d196988da2719b3:/tools_test.go diff --git a/tools_test.go b/tools_test.go index 45cd4a2..23507f6 100644 --- a/tools_test.go +++ b/tools_test.go @@ -29,6 +29,7 @@ func TestToolRunsAfterItsCallIsDurable(t *testing.T) { "flush, marker absent", "echo: done\n", }, log.Events()) + require.FileExists(t, filepath.Join(dir, "ran")) } @@ -93,6 +94,7 @@ func TestShellInterruptKillsTheCommandAndItsChildren(t *testing.T) { start := time.Now() output := box.shell(ctx, "echo started; sleep 30 & sleep 30") + require.Less(t, time.Since(start), 10*time.Second) require.Equal(t, "started\n\n[interrupted]", output) } @@ -107,7 +109,7 @@ func TestFileTools(t *testing.T) { require.Equal(t, "error: old occurs 2 times in "+path+", not once", box.run(t.Context(), "edit", `{"path":"notes/a.txt","old":"two","new":"2"}`)) require.Equal(t, "edited "+path, box.run(t.Context(), "edit", `{"path":"notes/a.txt","old":"one","new":"1"}`)) require.Equal(t, "1 two two\n", box.run(t.Context(), "read", `{"path":"notes/a.txt"}`)) - require.Contains(t, box.run(t.Context(), "read", `{"path":"missing.txt"}`), "error: open "+filepath.Join(dir, "missing.txt")) + require.Contains(t, box.run(t.Context(), "read", `{"path":"missing.txt"}`), "error: open tool file: open "+filepath.Join(dir, "missing.txt")) require.Equal(t, `error: arguments: json: unknown field "file"`, box.run(t.Context(), "read", `{"file":"a.txt"}`)) require.Equal(t, `error: unknown tool "grep"`, box.run(t.Context(), "grep", `{}`)) } @@ -222,6 +224,26 @@ type ToolRecordingLog struct { events []string } +// newTestToolbox returns a toolbox with log, an empty chat, and the working +// directory dir. +func newTestToolbox(t *testing.T, log ToolLog, dir string) *Toolbox { + t.Helper() + + memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer(), discardLog()) + require.NoError(t, err) + + t.Cleanup(func() { + require.NoError(t, memory.Close()) + }) + + return &Toolbox{ + log: log, + chat: memory, + subagents: newTestSubagents(t), + workdir: dir, + } +} + func (r *ToolRecordingLog) Append(kind, text string) (Message, error) { r.mutex.Lock() defer r.mutex.Unlock() @@ -252,23 +274,3 @@ func (r *ToolRecordingLog) Events() []string { return append([]string(nil), r.events...) } - -// newTestToolbox returns a toolbox with log, an empty chat, and the working -// directory dir. -func newTestToolbox(t *testing.T, log ToolLog, dir string) *Toolbox { - t.Helper() - - memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, newFakeSummarizer(), discardLog()) - require.NoError(t, err) - - t.Cleanup(func() { - require.NoError(t, memory.Close()) - }) - - return &Toolbox{ - log: log, - chat: memory, - subagents: newTestSubagents(t), - workdir: dir, - } -}