1package agent
2
3import (
4 "testing"
5
6 "github.com/bnema/zut/packages/agent/tools"
7)
8
9func TestBuildToolRegistryGrepSelectionAndDefaults(t *testing.T) {
10 cwd := t.TempDir()
11
12 defaultRegistry := buildToolRegistry(Args{}, cwd, nil, false, false, false)
13 if _, ok := defaultRegistry["grep"]; !ok {
14 t.Fatal("default registry does not contain grep")
15 }
16 defaultSummaries := toolSummaries(defaultRegistry, Args{})
17 grepIndex := -1
18 for i, summary := range defaultSummaries {
19 if summary.Name == "grep" {
20 grepIndex = i
21 break
22 }
23 }
24 if grepIndex < 0 {
25 t.Fatal("default tool summaries do not contain grep")
26 }
27 if grepIndex == 0 || defaultSummaries[grepIndex-1].Name != "edit" {
28 t.Fatalf("grep summary order has predecessor %q, want edit", defaultSummaries[grepIndex-1].Name)
29 }
30
31 selected := buildToolRegistry(Args{Tools: []string{"grep"}}, cwd, nil, false, false, false)
32 if len(selected) != 1 {
33 t.Fatalf("selected registry has %d tools, want one", len(selected))
34 }
35 if _, ok := selected["grep"].(*tools.GrepTool); !ok {
36 t.Fatalf("selected grep has type %T", selected["grep"])
37 }
38 if summaries := toolSummaries(selected, Args{Tools: []string{"grep"}}); len(summaries) != 1 || summaries[0].Name != "grep" {
39 t.Fatalf("selected summaries = %#v, want only grep", summaries)
40 }
41
42 noTools := buildToolRegistry(Args{NoTools: true}, cwd, nil, false, false, false)
43 if len(noTools) != 0 {
44 t.Fatalf("no-tools registry has %d tools", len(noTools))
45 }
46 if summaries := toolSummaries(noTools, Args{NoTools: true}); len(summaries) != 0 {
47 t.Fatalf("no-tools summaries = %#v", summaries)
48 }
49}