返回 DeepSeek-Reasonix
gitcmd_worktree_test.go
根目录 / internal / gitcmd / gitcmd_worktree_test.go
1 package gitcmd
2
3 import (
4 "context"
5 "os"
6 "os/exec"
7 "path/filepath"
8 "slices"
9 "testing"
10 )
11
12 func TestDriverOverridesReadRealLinkedWorktreeConfigs(t *testing.T) {
13 if _, err := exec.LookPath("git"); err != nil {
14 t.Skip("git not installed")
15 }
16 main := t.TempDir()
17 linked := filepath.Join(t.TempDir(), "linked")
18 run := func(dir string, args ...string) {
19 t.Helper()
20 cmdArgs := append([]string{"-C", dir}, args...)
21 if out, err := exec.Command("git", cmdArgs...).CombinedOutput(); err != nil {
22 t.Fatalf("git %v: %v: %s", args, err, out)
23 }
24 }
25 run(main, "init", "--quiet")
26 if err := os.WriteFile(filepath.Join(main, "tracked.txt"), []byte("initial\n"), 0o600); err != nil {
27 t.Fatal(err)
28 }
29 run(main, "add", "tracked.txt")
30 run(main, "-c", "user.name=Reasonix Test", "-c", "user.email=reasonix@example.invalid", "commit", "--quiet", "-m", "initial")
31 run(main, "config", "extensions.worktreeConfig", "true")
32 run(main, "config", "filter.common.process", "malicious-process")
33 run(main, "worktree", "add", "--quiet", "--detach", linked, "HEAD")
34 run(linked, "config", "--worktree", "filter.local.clean", "malicious-clean")
35 run(linked, "config", "--worktree", "merge.ours-too.driver", "malicious-merge")
36
37 for _, args := range [][]string{{"diff", "HEAD"}, {"-C", linked, "status"}} {
38 dir := linked
39 if args[0] == "-C" {
40 dir = ""
41 }
42 got, err := driverOverrides(context.Background(), dir, nil, args)
43 if err != nil {
44 t.Fatal(err)
45 }
46 for _, want := range []string{"filter.common.process=", "filter.local.clean=", "merge.ours-too.driver="} {
47 if !slices.Contains(got, want) {
48 t.Fatalf("driverOverrides(%v) = %v, want %s", args, got, want)
49 }
50 }
51 }
52 }
53
53 lines GO