]> git.giacomolli.uk - onechat/blobdiff - tools_test.go
Order model and chat declarations
[onechat] / tools_test.go
index 45cd4a242f1ee6024406c6d56a4c918d8fc14998..e1b19bbb05a125026654985d4240aabf37aac52b 100644 (file)
@@ -93,6 +93,7 @@ func TestShellInterruptKillsTheCommandAndItsChildren(t *testing.T) {
 
        start := time.Now()
        output := box.shell(ctx, "echo started; sleep 30 & sleep 30")
 
        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)
 }
        require.Less(t, time.Since(start), 10*time.Second)
        require.Equal(t, "started\n\n[interrupted]", output)
 }
@@ -107,7 +108,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.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", `{}`))
 }
        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 +223,26 @@ type ToolRecordingLog struct {
        events []string
 }
 
        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()
 func (r *ToolRecordingLog) Append(kind, text string) (Message, error) {
        r.mutex.Lock()
        defer r.mutex.Unlock()
@@ -252,23 +273,3 @@ func (r *ToolRecordingLog) Events() []string {
 
        return append([]string(nil), r.events...)
 }
 
        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,
-       }
-}