fix: address review findings on budget system
- Account for truncation marker tokens when computing diff budget (prevents EstTokens exceeding model limit in edge cases) - Rune-safe truncation for both UserMeta and Diff (no split multi-byte) - Fix misleading comment (1000 chars → ~1000 tokens/4000 chars) - Extract marker strings as constants - Add unit tests for BuildSystemBase and BuildUserMeta
This commit is contained in:
@@ -116,3 +116,43 @@ func TestBuildUserPrompt_WithoutFileContext(t *testing.T) {
|
||||
t.Error("should not include file context section when empty")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func TestBuildSystemBase(t *testing.T) {
|
||||
result := BuildSystemBase()
|
||||
if result == "" {
|
||||
t.Fatal("BuildSystemBase returned empty string")
|
||||
}
|
||||
if !strings.Contains(result, "expert code reviewer") {
|
||||
t.Error("expected reviewer role in system base")
|
||||
}
|
||||
if !strings.Contains(result, "REQUEST_CHANGES") {
|
||||
t.Error("expected verdict format in system base")
|
||||
}
|
||||
if !strings.Contains(result, "JSON") {
|
||||
t.Error("expected JSON output instruction in system base")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildUserMeta(t *testing.T) {
|
||||
result := BuildUserMeta("Fix bug", "Some description", true, "all checks passed")
|
||||
if !strings.Contains(result, "Fix bug") {
|
||||
t.Error("expected title in user meta")
|
||||
}
|
||||
if !strings.Contains(result, "Some description") {
|
||||
t.Error("expected description in user meta")
|
||||
}
|
||||
if !strings.Contains(result, "PASSED") {
|
||||
t.Error("expected CI PASSED status")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildUserMeta_CIFailed(t *testing.T) {
|
||||
result := BuildUserMeta("Title", "", false, "test job failed")
|
||||
if !strings.Contains(result, "FAILED") {
|
||||
t.Error("expected CI FAILED status")
|
||||
}
|
||||
if strings.Contains(result, "Description") {
|
||||
t.Error("expected no description section when empty")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user