The init-generated config now ships with a comprehensive home snapshot exclude list (caches, trash, cloud-synced data, rebuildable app state, device backups) derived from a battle-tested rsync backup script, plus an apps snapshot for /Applications excluding Apple-redownloadable apps (Safari, GarageBand, iWork, iMovie) and large third-party installs. Obsolete pre-Catalina app entries (Dashboard, iTunes, DVD Player, etc.) were dropped — OS apps live in /System/Applications on modern macOS and never appear in /Applications. Adds a test asserting the template parses as valid YAML with the expected snapshot structure.
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package cli
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.eeqj.de/sneak/vaultik/internal/config"
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
// TestDefaultConfigTemplateParses ensures the init template is valid YAML
|
|
// that unmarshals into the Config struct with the expected snapshots.
|
|
func TestDefaultConfigTemplateParses(t *testing.T) {
|
|
var cfg config.Config
|
|
if err := yaml.Unmarshal([]byte(defaultConfigTemplate), &cfg); err != nil {
|
|
t.Fatalf("default config template is not valid YAML: %v", err)
|
|
}
|
|
|
|
if len(cfg.AgeRecipients) != 1 {
|
|
t.Errorf("expected 1 placeholder age recipient, got %d", len(cfg.AgeRecipients))
|
|
}
|
|
|
|
home, ok := cfg.Snapshots["home"]
|
|
if !ok {
|
|
t.Fatal("expected 'home' snapshot in default config")
|
|
}
|
|
if len(home.Paths) == 0 {
|
|
t.Error("home snapshot should have at least one path")
|
|
}
|
|
if len(home.Exclude) == 0 {
|
|
t.Error("home snapshot should have exclude patterns")
|
|
}
|
|
|
|
apps, ok := cfg.Snapshots["apps"]
|
|
if !ok {
|
|
t.Fatal("expected 'apps' snapshot in default config")
|
|
}
|
|
if len(apps.Paths) != 1 || apps.Paths[0] != "/Applications" {
|
|
t.Errorf("apps snapshot should back up /Applications, got %v", apps.Paths)
|
|
}
|
|
if len(apps.Exclude) == 0 {
|
|
t.Error("apps snapshot should have exclude patterns")
|
|
}
|
|
}
|