Skip to content

Commit

Permalink
merge exposes, heathchecks.test
Browse files Browse the repository at this point in the history
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
  • Loading branch information
ndeloof committed Nov 24, 2022
1 parent 9df6287 commit 3644a2f
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 2 deletions.
21 changes: 19 additions & 2 deletions loader/merge.go
Expand Up @@ -119,6 +119,9 @@ func _merge(baseService *types.ServiceConfig, overrideService *types.ServiceConf
if overrideService.Command != nil {
baseService.Command = overrideService.Command
}
if overrideService.HealthCheck != nil {
baseService.HealthCheck.Test = overrideService.HealthCheck.Test
}
if overrideService.Entrypoint != nil {
baseService.Entrypoint = overrideService.Entrypoint
}
Expand All @@ -127,9 +130,23 @@ func _merge(baseService *types.ServiceConfig, overrideService *types.ServiceConf
} else {
baseService.Environment = overrideService.Environment
}
baseService.Expose = unique(baseService.Expose)
return baseService, nil
}

func unique(slice []string) []string {
uniqMap := make(map[string]struct{})
for _, v := range slice {
uniqMap[v] = struct{}{}
}

uniqSlice := make([]string, 0, len(uniqMap))
for v := range uniqMap {
uniqSlice = append(uniqSlice, v)
}
return uniqSlice
}

func toServiceSecretConfigsMap(s interface{}) (map[interface{}]interface{}, error) {
secrets, ok := s.([]types.ServiceSecretConfig)
if !ok {
Expand Down Expand Up @@ -299,15 +316,15 @@ func mergeLoggingConfig(dst, src reflect.Value) error {
return nil
}

//nolint: unparam
// nolint: unparam
func mergeUlimitsConfig(dst, src reflect.Value) error {
if src.Interface() != reflect.Zero(reflect.TypeOf(src.Interface())).Interface() {
dst.Elem().Set(src.Elem())
}
return nil
}

//nolint: unparam
// nolint: unparam
func mergeServiceNetworkConfig(dst, src reflect.Value) error {
if src.Interface() != reflect.Zero(reflect.TypeOf(src.Interface())).Interface() {
dst.Elem().FieldByName("Aliases").Set(src.Elem().FieldByName("Aliases"))
Expand Down
30 changes: 30 additions & 0 deletions loader/merge_test.go
Expand Up @@ -1223,6 +1223,36 @@ func TestMergeCommands(t *testing.T) {
assert.DeepEqual(t, merged.Services[0].Command, types.ShellCommand{"/bin/ash", "-c", "echo 'world'"})
}

func TestMergeHealthCheck(t *testing.T) {
configDetails := types.ConfigDetails{
ConfigFiles: []types.ConfigFile{
{Filename: "base.yml", Config: map[string]interface{}{
"services": map[string]interface{}{
"foo": map[string]interface{}{
"image": "alpine",
"healthcheck": map[string]interface{}{
"test": []interface{}{"CMD", "original"},
},
},
},
}},
{Filename: "override.yml", Config: map[string]interface{}{
"services": map[string]interface{}{
"foo": map[string]interface{}{
"image": "alpine",
"healthcheck": map[string]interface{}{
"test": []interface{}{"CMD", "override"},
},
},
},
}},
},
}
merged, err := loadTestProject(configDetails)
assert.NilError(t, err)
assert.DeepEqual(t, merged.Services[0].HealthCheck.Test, types.HealthCheckTest{"CMD", "override"})
}

func TestMergeEnvironments(t *testing.T) {
configDetails := types.ConfigDetails{
ConfigFiles: []types.ConfigFile{
Expand Down

0 comments on commit 3644a2f

Please sign in to comment.