fix(11-04): keep earlier overrides when compass Persist saves
Persist rewrote overrides.yaml with only this process's runtime values, so saving one key (for example websockets:generate-vapid-keys --update) dropped every key persisted earlier. It now starts from the saved file and lets runtime values win.
This commit is contained in:
@@ -115,3 +115,44 @@ func TestPersistRejectsInvalidEnvName(t *testing.T) {
|
||||
t.Fatalf("error should not echo unsanitized env path: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPersistKeepsEarlierOverrides(t *testing.T) {
|
||||
dir := writeConfigTree(t, map[string]string{
|
||||
"app.yaml": "name: base\n",
|
||||
"env/development/overrides.yaml": "app:\n name: persisted\n",
|
||||
})
|
||||
cfg, err := Open(Options{Dir: dir, Env: "development", Environ: []string{}})
|
||||
if err != nil {
|
||||
t.Fatalf("Open: %v", err)
|
||||
}
|
||||
if err := cfg.Set("push.public_key", "saved-key"); err != nil {
|
||||
t.Fatalf("Set: %v", err)
|
||||
}
|
||||
if err := cfg.Persist(); err != nil {
|
||||
t.Fatalf("Persist: %v", err)
|
||||
}
|
||||
again, err := Open(Options{Dir: dir, Env: "development", Environ: []string{}})
|
||||
if err != nil {
|
||||
t.Fatalf("reopen: %v", err)
|
||||
}
|
||||
if got := again.String("push.public_key"); got != "saved-key" {
|
||||
t.Fatalf("push.public_key = %q, want saved-key", got)
|
||||
}
|
||||
if got := again.String("app.name"); got != "persisted" {
|
||||
t.Fatalf("app.name = %q, want the earlier persisted value", got)
|
||||
}
|
||||
// A runtime value replaces the persisted value of the same key.
|
||||
if err := again.Set("app.name", "runtime"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := again.Persist(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
third, err := Open(Options{Dir: dir, Env: "development", Environ: []string{}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if third.String("app.name") != "runtime" || third.String("push.public_key") != "saved-key" {
|
||||
t.Fatalf("after second Persist: app.name=%q push.public_key=%q", third.String("app.name"), third.String("push.public_key"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user