- 新增 `git air msg` 命令,支持根据暂存区或历史 Diff 自动生成 Conventional Commits 提交说明 - 支持中、英、日、韩多语言自适应及通过 CLI/配置文件/环境变量进行定制 - 完善全局配置体系,新增 `commit_lang` 选项及相关单元测试
59 lines
1.2 KiB
Go
59 lines
1.2 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)
|
|
}
|
|
}
|
|
}
|