From 3b8be6195108a602c11761ee89c95cd6dc908703 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 28 May 2026 10:50:21 +0300 Subject: fix(release): honor manager aiTool dispatch (cq) --- internal/release/release_ai_tool_test.go | 64 ++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 internal/release/release_ai_tool_test.go (limited to 'internal/release/release_ai_tool_test.go') diff --git a/internal/release/release_ai_tool_test.go b/internal/release/release_ai_tool_test.go new file mode 100644 index 0000000..1d15280 --- /dev/null +++ b/internal/release/release_ai_tool_test.go @@ -0,0 +1,64 @@ +package release + +import ( + "os/exec" + "reflect" + "testing" + + "codeberg.org/snonux/gitsyncer/internal/aitool" +) + +func TestAvailableReleaseNotesTools_DefaultChainWithFallback(t *testing.T) { + t.Parallel() + + manager := NewManager("") + got := manager.availableReleaseNotesTools(fakeLookPathRelease("ollama", "claude")) + want := []aitool.Tool{aitool.ToolOpencode, aitool.ToolClaude} + + if !reflect.DeepEqual(got, want) { + t.Fatalf("availableReleaseNotesTools() = %#v, want %#v", got, want) + } +} + +func TestAvailableReleaseNotesTools_HonorsConfiguredPreferenceWithFallback(t *testing.T) { + t.Parallel() + + manager := NewManager("") + manager.SetAITool("hexai") + + got := manager.availableReleaseNotesTools(fakeLookPathRelease("claude", "amp")) + want := []aitool.Tool{aitool.ToolClaude, aitool.ToolAmp} + + if !reflect.DeepEqual(got, want) { + t.Fatalf("availableReleaseNotesTools() = %#v, want %#v", got, want) + } +} + +func TestAvailableReleaseNotesTools_AmpChainOnly(t *testing.T) { + t.Parallel() + + manager := NewManager("") + manager.SetAITool("amp") + + got := manager.availableReleaseNotesTools(fakeLookPathRelease("ollama", "amp")) + want := []aitool.Tool{aitool.ToolAmp} + + if !reflect.DeepEqual(got, want) { + t.Fatalf("availableReleaseNotesTools() = %#v, want %#v", got, want) + } +} + +func fakeLookPathRelease(tools ...string) func(string) (string, error) { + available := make(map[string]struct{}, len(tools)) + for _, tool := range tools { + available[tool] = struct{}{} + } + + return func(file string) (string, error) { + if _, ok := available[file]; ok { + return "/usr/bin/" + file, nil + } + + return "", exec.ErrNotFound + } +} -- cgit v1.2.3