diff --git a/loader/merge.go b/loader/merge.go index 3c24008d..c6b25f5e 100644 --- a/loader/merge.go +++ b/loader/merge.go @@ -130,7 +130,7 @@ func _merge(baseService *types.ServiceConfig, overrideService *types.ServiceConf if overrideService.Command != nil { baseService.Command = overrideService.Command } - if overrideService.HealthCheck != nil { + if overrideService.HealthCheck != nil && overrideService.HealthCheck.Test != nil { baseService.HealthCheck.Test = overrideService.HealthCheck.Test } if overrideService.Entrypoint != nil { diff --git a/loader/merge_test.go b/loader/merge_test.go index d0802803..9b919224 100644 --- a/loader/merge_test.go +++ b/loader/merge_test.go @@ -1287,11 +1287,23 @@ func TestMergeHealthCheck(t *testing.T) { }, }, }}, + {Filename: "override.yml", Config: map[string]interface{}{ + "services": map[string]interface{}{ + "foo": map[string]interface{}{ + "image": "alpine", + "healthcheck": map[string]interface{}{ + "timeout": "30s", + }, + }, + }, + }}, }, } merged, err := loadTestProject(configDetails) assert.NilError(t, err) - assert.DeepEqual(t, merged.Services[0].HealthCheck.Test, types.HealthCheckTest{"CMD", "override"}) + check := merged.Services[0].HealthCheck + assert.DeepEqual(t, check.Test, types.HealthCheckTest{"CMD", "override"}) + assert.Equal(t, check.Timeout.String(), "30s") } func TestMergeEnvironments(t *testing.T) {