Files
unclesam b04d70b99a feat: 拆分评审与提交消息提示词并增加 hook 备份与 JSON 输出
- 新增 custom_reviewer_prompt 和 custom_commit_msg_prompt,兼容旧 custom_prompt
- pre-commit hook 安装时备份已有 hook,卸载时恢复
- 支持 --format json 输出评审结果
- diff 发送前自动脱敏敏感信息
2026-08-23 22:31:30 +08:00

69 lines
1.6 KiB
Go

package reviewer
import (
"strings"
"testing"
)
func TestDetectLanguage(t *testing.T) {
tests := []struct {
input string
expected string
}{
{"zh", "zh"},
{"ZH", "zh"},
{"zh-CN", "zh"},
{"中文", "zh"},
{"ja", "ja"},
{"ja-JP", "ja"},
{"Japanese", "ja"},
{"日本語", "ja"},
{"ko", "ko"},
{"ko-KR", "ko"},
{"한국어", "ko"},
{"en", "en"},
{"en-US", "en"},
{"English", "en"},
{"fr", "en"}, // 未预置语言回退到 en
}
for _, tt := range tests {
got := DetectLanguage(tt.input)
if got != tt.expected {
t.Errorf("DetectLanguage(%q) = %q, expected %q", tt.input, got, tt.expected)
}
}
}
func TestBuildCommitMsgPrompt(t *testing.T) {
langs := []struct {
lang string
expected string
}{
{"zh", "简体中文"},
{"ja", "日本語"},
{"ko", "한국어"},
{"en", "English"},
}
for _, tt := range langs {
prompt := BuildCommitMsgPrompt(tt.lang)
if !strings.Contains(prompt, tt.expected) {
t.Errorf("BuildCommitMsgPrompt(%q) 应包含语言名称 %q", tt.lang, tt.expected)
}
if !strings.Contains(prompt, "Conventional Commits") {
t.Errorf("BuildCommitMsgPrompt(%q) 应包含 Conventional Commits 说明", tt.lang)
}
}
}
func TestBuildCommitMsgPromptWithCustom(t *testing.T) {
prompt := BuildCommitMsgPromptWithCustom("en", "Use a short imperative subject and mention breaking changes explicitly.")
if !strings.Contains(prompt, "Use a short imperative subject") {
t.Fatal("自定义 Commit Message Prompt 未被合并")
}
if !strings.Contains(prompt, "Conventional Commits") {
t.Fatal("内置 Conventional Commits 约束不应丢失")
}
}