Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit ee27dbe

Browse files
authored
Merge pull request #373 from silvin-lubecki/fix-no-default-settings-bug
Fix rendering an app without any default settings
2 parents fc098ab + 73a15dc commit ee27dbe

3 files changed

Lines changed: 36 additions & 12 deletions

File tree

render/render_test.go

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,9 @@ back:
106106
image: wrong
107107
`)
108108
app := &types.App{Path: "my-app"}
109-
err := types.Metadata(metadata)(app)
110-
assert.NilError(t, err)
111-
err = types.WithComposes(composeFile)(app)
112-
assert.NilError(t, err)
113-
err = types.WithSettings(settings)(app)
114-
assert.NilError(t, err)
109+
assert.NilError(t, types.Metadata(metadata)(app))
110+
assert.NilError(t, types.WithComposes(composeFile)(app))
111+
assert.NilError(t, types.WithSettings(settings)(app))
115112
userSettings := map[string]string{
116113
"front.image": "nginx",
117114
"front.port": "4242",
@@ -135,6 +132,33 @@ services:
135132
`)
136133
}
137134

135+
func TestRenderWithoutDefaultSettings(t *testing.T) {
136+
metadata := strings.NewReader(validMeta)
137+
composeFile := strings.NewReader(`
138+
version: "3.6"
139+
services:
140+
front:
141+
image: ${front.image}
142+
`)
143+
settings := strings.NewReader("")
144+
app := &types.App{Path: "my-app"}
145+
assert.NilError(t, types.Metadata(metadata)(app))
146+
assert.NilError(t, types.WithComposes(composeFile)(app))
147+
assert.NilError(t, types.WithSettings(settings)(app))
148+
userSettings := map[string]string{
149+
"front.image": "nginx",
150+
}
151+
c, err := Render(app, userSettings)
152+
assert.NilError(t, err)
153+
s, err := yaml.Marshal(c)
154+
assert.NilError(t, err)
155+
assert.Equal(t, string(s), `version: "3.6"
156+
services:
157+
front:
158+
image: nginx
159+
`)
160+
}
161+
138162
func TestValidateBrokenComposeFile(t *testing.T) {
139163
metadata := strings.NewReader(validMeta)
140164
brokenComposeFile := strings.NewReader(`version: "3.6"

types/settings/settings.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ func assignKey(m map[string]interface{}, keys []string, value interface{}) error
100100
return nil
101101
}
102102
if v, present := m[key]; !present {
103-
m[key] = Settings{}
104-
} else if _, isMap := v.(Settings); !isMap {
103+
m[key] = map[string]interface{}{}
104+
} else if _, isMap := v.(map[string]interface{}); !isMap {
105105
return errors.Errorf("key %s already present and not a map (%T)", key, v)
106106
}
107-
return assignKey(m[key].(Settings), ks, value)
107+
return assignKey(m[key].(map[string]interface{}), ks, value)
108108
}

types/settings/settings_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ func TestFromFlatten(t *testing.T) {
4747
assert.NilError(t, err)
4848
assert.Check(t, is.DeepEqual(s, Settings{
4949
"foo": "bar",
50-
"bar": Settings{
50+
"bar": map[string]interface{}{
5151
"baz": "banana",
5252
"port": 80,
5353
},
54-
"baz": Settings{
55-
"biz": Settings{
54+
"baz": map[string]interface{}{
55+
"biz": map[string]interface{}{
5656
"a": 1,
5757
"b": 2,
5858
},

0 commit comments

Comments
 (0)