@@ -29,3 +29,31 @@ func TestArrayPatch(t *testing.T) {
|
||||
t.Fatal(out)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddTopLevelNamedVolumePreservesServiceMounts(t *testing.T) {
|
||||
src := "services:\n app:\n volumes:\n - db_data:/var/lib/db\n - /srv/app:/data:ro\n x-future: keep\n"
|
||||
out, err := Apply(src, Patch{Path: []string{"volumes", "db_data"}, Value: map[string]any{}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, want := range []string{"db_data:/var/lib/db", "/srv/app:/data:ro", "x-future: keep", "volumes:", "db_data:"} {
|
||||
if !strings.Contains(out, want) {
|
||||
t.Fatalf("expected %q to be preserved/added:\n%s", want, out)
|
||||
}
|
||||
}
|
||||
parsed, err := Parse(out)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
root, ok := parsed.Value.(map[string]any)
|
||||
if !ok {
|
||||
t.Fatalf("unexpected parse result %#v", parsed.Value)
|
||||
}
|
||||
vols, ok := root["volumes"].(map[string]any)
|
||||
if !ok {
|
||||
t.Fatalf("top-level volumes missing: %#v", root["volumes"])
|
||||
}
|
||||
if _, ok := vols["db_data"]; !ok {
|
||||
t.Fatalf("db_data declaration missing: %#v", vols)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user