Skip to content

Commit 92d8aae

Browse files
committed
enforce unicity as this is checked by validation
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent fcc46f1 commit 92d8aae

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

loader/loader.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,14 @@ func loadYamlModel(ctx context.Context, config types.ConfigDetails, opts *Option
326326
}
327327

328328
dict, err = override.Merge(dict, cfg)
329+
if err != nil {
330+
return err
331+
}
332+
333+
dict, err = override.EnforceUnicity(dict)
334+
if err != nil {
335+
return err
336+
}
329337

330338
if !opts.SkipValidation {
331339
if err := schema.Validate(dict); err != nil {
@@ -360,11 +368,6 @@ func loadYamlModel(ctx context.Context, config types.ConfigDetails, opts *Option
360368
}
361369
}
362370

363-
dict, err = override.EnforceUnicity(dict)
364-
if err != nil {
365-
return nil, err
366-
}
367-
368371
dict, err = transform.Canonical(dict)
369372
if err != nil {
370373
return nil, err

loader/override_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,35 @@ services:
165165
})
166166
assert.NilError(t, err)
167167
}
168+
169+
func TestOverrideVolume(t *testing.T) {
170+
yaml := `
171+
name: test-override-volume
172+
services:
173+
test:
174+
image: test
175+
volumes:
176+
- ./src:/src
177+
`
178+
179+
override := `
180+
services:
181+
test:
182+
volumes:
183+
- ./src:/src
184+
`
185+
p, err := LoadWithContext(context.Background(), types.ConfigDetails{
186+
ConfigFiles: []types.ConfigFile{
187+
{
188+
Filename: "base",
189+
Content: []byte(yaml),
190+
},
191+
{
192+
Filename: "override",
193+
Content: []byte(override),
194+
},
195+
},
196+
})
197+
assert.NilError(t, err)
198+
assert.Equal(t, len(p.Services["test"].Volumes), 1)
199+
}

override/uncity.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func enforceUnicity(value any, p tree.Path) (any, error) {
6262
case []any:
6363
for pattern, indexer := range unique {
6464
if p.Matches(pattern) {
65-
var seq []any
65+
seq := []any{}
6666
keys := map[string]int{}
6767
for i, entry := range v {
6868
key, err := indexer(entry, p.Next(fmt.Sprintf("[%d]", i)))

0 commit comments

Comments
 (0)