Skip to content

Commit f02a580

Browse files
authored
load: apply !reset on extended services (#455)
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent c8ee8d4 commit f02a580

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

loader/loader.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,6 @@ func load(ctx context.Context, configDetails types.ConfigDetails, opts *Options,
255255
loaded = append(loaded, mainFile)
256256

257257
includeRefs := make(map[string][]types.IncludeConfig)
258-
first := true
259258
for _, file := range configDetails.ConfigFiles {
260259
var postProcessor PostProcessor
261260
configDict := file.Config
@@ -285,22 +284,21 @@ func load(ctx context.Context, configDetails types.ConfigDetails, opts *Options,
285284
}
286285
}
287286

288-
if first {
289-
first = false
287+
if model == nil {
290288
model = cfg
291-
return nil
292-
}
293-
merged, err := merge([]*types.Config{model, cfg})
294-
if err != nil {
295-
return err
289+
} else {
290+
merged, err := merge([]*types.Config{model, cfg})
291+
if err != nil {
292+
return err
293+
}
294+
model = merged
296295
}
297296
if postProcessor != nil {
298-
err = postProcessor.Apply(merged)
297+
err = postProcessor.Apply(model)
299298
if err != nil {
300299
return err
301300
}
302301
}
303-
model = merged
304302
return nil
305303
}
306304

loader/loader_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,27 @@ services:
422422
assert.Equal(t, svcB.Build.Context, bDir)
423423
}
424424

425+
func TestLoadExtendsWihReset(t *testing.T) {
426+
actual, err := loadYAML(`
427+
name: load-extends
428+
services:
429+
foo:
430+
extends:
431+
service: bar
432+
volumes: !reset []
433+
bar:
434+
image: alpine
435+
command: echo
436+
volumes:
437+
- .:/src
438+
`)
439+
assert.NilError(t, err)
440+
assert.Check(t, is.Len(actual.Services, 2))
441+
foo, err := actual.GetService("foo")
442+
assert.NilError(t, err)
443+
assert.Check(t, len(foo.Volumes) == 0)
444+
}
445+
425446
func TestLoadCredentialSpec(t *testing.T) {
426447
actual, err := loadYAML(`
427448
name: load-credential-spec

0 commit comments

Comments
 (0)