返回 DeepSeek-Reasonix
migrate_hooks_test.go
根目录 / internal / config / migrate_hooks_test.go
1 package config
2
3 import (
4 "os"
5 "path/filepath"
6 "strings"
7 "testing"
8 )
9
10 func TestMigrateSupportDataCarriesGlobalHooks(t *testing.T) {
11 legacy := t.TempDir()
12 fresh := t.TempDir()
13 hooks := `{"hooks":{"Stop":[{"command":"echo done"}]}}`
14 if err := os.WriteFile(filepath.Join(legacy, "settings.json"), []byte(hooks), 0o600); err != nil {
15 t.Fatal(err)
16 }
17
18 migrateSupportData(legacy, fresh)
19
20 got, err := os.ReadFile(filepath.Join(fresh, "settings.json"))
21 if err != nil {
22 t.Fatalf("global hooks were not migrated: %v", err)
23 }
24 if string(got) != hooks {
25 t.Fatalf("migrated hooks = %q, want %q", got, hooks)
26 }
27 }
28
29 func TestMigrateSupportDataKeepsExistingFiles(t *testing.T) {
30 legacy := t.TempDir()
31 fresh := t.TempDir()
32 if err := os.WriteFile(filepath.Join(legacy, "settings.json"), []byte(`{"hooks":{"Stop":[]}}`), 0o600); err != nil {
33 t.Fatal(err)
34 }
35 current := `{"hooks":{"Stop":[{"command":"current"}]}}`
36 if err := os.WriteFile(filepath.Join(fresh, "settings.json"), []byte(current), 0o600); err != nil {
37 t.Fatal(err)
38 }
39
40 warnings := migrateSupportData(legacy, fresh)
41
42 got, err := os.ReadFile(filepath.Join(fresh, "settings.json"))
43 if err != nil {
44 t.Fatal(err)
45 }
46 if string(got) != current {
47 t.Fatalf("migration overwrote live settings: got %q, want %q", got, current)
48 }
49 var reported bool
50 for _, w := range warnings {
51 if strings.Contains(w, "kept existing file settings.json") {
52 reported = true
53 }
54 }
55 if !reported {
56 t.Fatalf("skipping an existing file should be reported, got %v", warnings)
57 }
58 }
59
59 lines GO