package gitx import ( "context" "os" "os/exec" "strings" "testing" "time" ) // runStin 跑一条带 stdin 的 git 命令并返回去空格后的输出。 func runStdin(t *testing.T, dir, stdin string, args ...string) string { t.Helper() ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() cmd := exec.CommandContext(ctx, "git", args...) cmd.Dir = dir cmd.Stdin = strings.NewReader(stdin) cmd.Env = append(os.Environ(), "GIT_AUTHOR_NAME=t", "GIT_AUTHOR_EMAIL=t@gitcat.local", "GIT_COMMITTER_NAME=t", "GIT_COMMITTER_EMAIL=t@gitcat.local") out, err := cmd.CombinedOutput() if err != nil { t.Fatalf("git %s 失败: %v\n%s", strings.Join(args, " "), err, out) } return strings.TrimSpace(string(out)) }