Skip to content

Commit 6943896

Browse files
Merge pull request #658 from zalando-incubator/provisioner/split-empty
provisioner: update split template function logic for empty input
2 parents b95a678 + 0637538 commit 6943896

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

provisioner/template.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@ func azCount(subnets map[string]string) int {
276276

277277
// split is a template function that takes a string and a separator and returns the splitted parts.
278278
func split(s string, d string) []string {
279+
if s == "" {
280+
return nil
281+
}
279282
return strings.Split(s, d)
280283
}
281284

provisioner/template_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,38 @@ func TestAZCountNoSubnets(t *testing.T) {
180180
require.EqualValues(t, "0", result)
181181
}
182182

183+
func TestSplit(t *testing.T) {
184+
t.Run("empty", func(t *testing.T) {
185+
result, err := renderSingle(
186+
t,
187+
`{{ range $index, $element := split .Values.data "," }}{{ $index }}={{ $element}}{{end}}`,
188+
"")
189+
190+
require.NoError(t, err)
191+
require.Equal(t, "", result)
192+
})
193+
194+
t.Run("single", func(t *testing.T) {
195+
result, err := renderSingle(
196+
t,
197+
`{{ range $index, $element := split .Values.data "," }}{{ $index }}={{ $element}}{{end}}`,
198+
"foo")
199+
200+
require.NoError(t, err)
201+
require.Equal(t, "0=foo", result)
202+
})
203+
204+
t.Run("multiple", func(t *testing.T) {
205+
result, err := renderSingle(
206+
t,
207+
`{{ range $index, $element := split .Values.data "," }}{{ $index }}={{ $element}}{{end}}`,
208+
"foo,bar")
209+
210+
require.NoError(t, err)
211+
require.Equal(t, "0=foo1=bar", result)
212+
})
213+
}
214+
183215
func TestMountUnitName(t *testing.T) {
184216
result, err := renderSingle(
185217
t,

0 commit comments

Comments
 (0)