Files
multica/server/internal/daemon/thread_name_test.go
Bohan Jiang 3808049361 fix(codex): set semantic thread names (#3887)
Co-authored-by: J <j@multica.ai>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-08 14:53:31 +08:00

45 lines
1.3 KiB
Go

package daemon
import (
"strings"
"testing"
)
func TestDeriveTaskThreadNamePrefersClaimedThreadName(t *testing.T) {
t.Parallel()
got := deriveTaskThreadName(Task{
ThreadName: " Fix login redirect ",
TriggerCommentContent: "please look at this comment",
ChatMessage: "chat fallback",
})
if got != "Fix login redirect" {
t.Fatalf("thread name = %q, want %q", got, "Fix login redirect")
}
}
func TestDeriveTaskThreadNameFallsBackToTaskContext(t *testing.T) {
t.Parallel()
got := deriveTaskThreadName(Task{QuickCreatePrompt: "create issue for billing sync"})
if got != "create issue for billing sync" {
t.Fatalf("thread name = %q, want quick-create prompt", got)
}
}
func TestNormalizeThreadNameCollapsesWhitespaceAndTruncates(t *testing.T) {
t.Parallel()
input := "first line\n\t" + strings.Repeat("x", codexThreadNameMaxRunes+20)
got := normalizeThreadName(input, codexThreadNameMaxRunes)
if strings.ContainsAny(got, "\n\t") {
t.Fatalf("thread name still contains raw whitespace: %q", got)
}
if len([]rune(got)) != codexThreadNameMaxRunes {
t.Fatalf("thread name rune length = %d, want %d", len([]rune(got)), codexThreadNameMaxRunes)
}
if !strings.HasSuffix(got, "...") {
t.Fatalf("thread name should end with ellipsis marker, got %q", got)
}
}