package main import ( "os" "path/filepath" "strings" "testing" ) func TestMetadataSyncPreservesCustomBuildFilesAndContent(t *testing.T) { root := t.TempDir() files := []string{"build/windows/info.json", "build/windows/wails.exe.manifest", "build/windows/nsis/wails_tools.nsh", "build/darwin/Info.plist", "build/darwin/Info.dev.plist", "build/linux/nfpm/nfpm.yaml"} for _, file := range files { data, err := os.ReadFile(filepath.Join("..", "..", filepath.FromSlash(file))) if err != nil { t.Fatal(err) } target := filepath.Join(root, filepath.FromSlash(file)) _ = os.MkdirAll(filepath.Dir(target), 0700) if err = os.WriteFile(target, data, 0600); err != nil { t.Fatal(err) } } task := filepath.Join(root, "build", "windows", "Taskfile.yml") _ = os.WriteFile(task, []byte("custom packaging must stay"), 0600) if err := syncMetadata(root, "9.8.7"); err != nil { t.Fatal(err) } for _, file := range files { data, _ := os.ReadFile(filepath.Join(root, filepath.FromSlash(file))) if !strings.Contains(string(data), "9.8.7") { t.Fatalf("version not updated: %s", file) } } data, _ := os.ReadFile(task) if string(data) != "custom packaging must stay" { t.Fatal("custom task overwritten") } data, _ = os.ReadFile(filepath.Join(root, "build", "windows", "info.json")) if !strings.Contains(string(data), "Local-Cursor") { t.Fatal("product metadata lost") } }