Remove empty strings from slice before parsing agent config (#3387)

Fixes: https://github.com/woodpecker-ci/woodpecker/issues/3385
This commit is contained in:
Robert Kaussow 2024-02-14 23:22:31 +01:00 committed by GitHub
parent 5e0ec973ba
commit 6abeff0165
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 33 additions and 1 deletions

View file

@ -275,7 +275,7 @@ func stringSliceAddToMap(sl []string, m map[string]string) error {
if m == nil {
m = make(map[string]string)
}
for _, v := range sl {
for _, v := range utils.StringSliceDeleteEmpty(sl) {
parts := strings.SplitN(v, "=", 2)
switch len(parts) {
case 2:

View file

@ -69,3 +69,14 @@ func SliceToBoolMap(s []string) map[string]bool {
}
return v
}
// StringSliceDeleteEmpty removes empty strings from a string slice.
func StringSliceDeleteEmpty(s []string) []string {
r := make([]string, 0)
for _, str := range s {
if str != "" {
r = append(r, str)
}
}
return r
}

View file

@ -68,3 +68,24 @@ func TestSliceToBoolMap(t *testing.T) {
assert.Equal(t, map[string]bool{}, SliceToBoolMap([]string{}))
assert.Equal(t, map[string]bool{}, SliceToBoolMap([]string{""}))
}
func TestStringSliceDeleteEmpty(t *testing.T) {
tests := []struct {
in []string
out []string
}{{
in: []string{"", "ab", "ab"},
out: []string{"ab", "ab"},
}, {
in: []string{"", "ab", ""},
out: []string{"ab"},
}, {
in: []string{""},
out: []string{},
}}
for _, tc := range tests {
exp := StringSliceDeleteEmpty(tc.in)
assert.EqualValues(t, tc.out, exp, "got '%#v', expects %#v", exp, tc.out)
}
}