- CreateIntegrationBranch: create from BaseCommit, push to origin - MergeToIntegration: merge worker branch with conflict detection - LandToMain: merge integration to target branch - CleanupBranches: remove all swarm branches after landing - Helper functions for branch naming conventions Closes gt-kmn.3 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
107 lines
2.2 KiB
Go
107 lines
2.2 KiB
Go
package swarm
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/steveyegge/gastown/internal/rig"
|
|
)
|
|
|
|
func TestGetIntegrationBranch(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
swarm, _ := m.Create("epic-1", []string{"Toast"}, "main")
|
|
|
|
branch, err := m.GetIntegrationBranch(swarm.ID)
|
|
if err != nil {
|
|
t.Fatalf("GetIntegrationBranch failed: %v", err)
|
|
}
|
|
|
|
expected := "swarm/epic-1"
|
|
if branch != expected {
|
|
t.Errorf("branch = %q, want %q", branch, expected)
|
|
}
|
|
}
|
|
|
|
func TestGetIntegrationBranchNotFound(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
_, err := m.GetIntegrationBranch("nonexistent")
|
|
if err != ErrSwarmNotFound {
|
|
t.Errorf("GetIntegrationBranch = %v, want ErrSwarmNotFound", err)
|
|
}
|
|
}
|
|
|
|
func TestGetWorkerBranch(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
branch := m.GetWorkerBranch("sw-1", "Toast", "task-123")
|
|
expected := "sw-1/Toast/task-123"
|
|
if branch != expected {
|
|
t.Errorf("branch = %q, want %q", branch, expected)
|
|
}
|
|
}
|
|
|
|
func TestCreateIntegrationBranchSwarmNotFound(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
err := m.CreateIntegrationBranch("nonexistent")
|
|
if err != ErrSwarmNotFound {
|
|
t.Errorf("CreateIntegrationBranch = %v, want ErrSwarmNotFound", err)
|
|
}
|
|
}
|
|
|
|
func TestMergeToIntegrationSwarmNotFound(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
err := m.MergeToIntegration("nonexistent", "branch")
|
|
if err != ErrSwarmNotFound {
|
|
t.Errorf("MergeToIntegration = %v, want ErrSwarmNotFound", err)
|
|
}
|
|
}
|
|
|
|
func TestLandToMainSwarmNotFound(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
err := m.LandToMain("nonexistent")
|
|
if err != ErrSwarmNotFound {
|
|
t.Errorf("LandToMain = %v, want ErrSwarmNotFound", err)
|
|
}
|
|
}
|
|
|
|
func TestCleanupBranchesSwarmNotFound(t *testing.T) {
|
|
r := &rig.Rig{
|
|
Name: "test-rig",
|
|
Path: "/tmp/test-rig",
|
|
}
|
|
m := NewManager(r)
|
|
|
|
err := m.CleanupBranches("nonexistent")
|
|
if err != ErrSwarmNotFound {
|
|
t.Errorf("CleanupBranches = %v, want ErrSwarmNotFound", err)
|
|
}
|
|
}
|