返回 DeepSeek-Reasonix
workspace_commit_detail_test.go
根目录 / desktop / workspace_commit_detail_test.go
1 package main
2
3 import (
4 "os"
5 "os/exec"
6 "slices"
7 "testing"
8 )
9
10 func TestWorkspaceGitCommitDetailPreservesUnicodeFilenames(t *testing.T) {
11 if _, err := exec.LookPath("git"); err != nil {
12 t.Skip("git not installed")
13 }
14 orig, err := os.Getwd()
15 if err != nil {
16 t.Fatal(err)
17 }
18 dir := t.TempDir()
19 if err := os.Chdir(dir); err != nil {
20 t.Fatal(err)
21 }
22 t.Cleanup(func() { _ = os.Chdir(orig) })
23 runGit(t, "init")
24 runGit(t, "config", "user.email", "test@example.com")
25 runGit(t, "config", "user.name", "Test User")
26 runGit(t, "config", "core.quotepath", "true")
27
28 if err := os.WriteFile("seed.txt", []byte("seed\n"), 0o644); err != nil {
29 t.Fatal(err)
30 }
31 runGit(t, "add", "seed.txt")
32 runGit(t, "commit", "-m", "seed")
33
34 const unicodeFilename = "中文文件名测试.txt"
35 if err := os.WriteFile("plain.txt", []byte("plain\n"), 0o644); err != nil {
36 t.Fatal(err)
37 }
38 if err := os.WriteFile(unicodeFilename, []byte("unicode\n"), 0o644); err != nil {
39 t.Fatal(err)
40 }
41 runGit(t, "add", "plain.txt", unicodeFilename)
42 runGit(t, "commit", "-m", "add files")
43
44 detail, err := (&App{}).WorkspaceGitCommitDetail("", gitOutput(t, "rev-parse", "HEAD"), "")
45 if err != nil {
46 t.Fatalf("WorkspaceGitCommitDetail err = %v", err)
47 }
48 want := []string{"plain.txt", unicodeFilename}
49 if !slices.Equal(detail.Files, want) {
50 t.Fatalf("files = %q, want %q", detail.Files, want)
51 }
52 }
53
53 lines GO