feat(cli): 新增 AI 智能 Commit Message 生成与多语言支持
- 新增 `git air msg` 命令,支持根据暂存区或历史 Diff 自动生成 Conventional Commits 提交说明 - 支持中、英、日、韩多语言自适应及通过 CLI/配置文件/环境变量进行定制 - 完善全局配置体系,新增 `commit_lang` 选项及相关单元测试
This commit is contained in:
1 parent
4d9674831b
commit
6eda653db6
9 files changed
+457
-41
No files matched your search
@@ -0,0 +1,58 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user