diff --git a/references/cli/addon.go b/references/cli/addon.go index 48cff95b8..df07d409b 100644 --- a/references/cli/addon.go +++ b/references/cli/addon.go @@ -234,11 +234,11 @@ func parseToMap(args []string) (map[string]interface{}, error) { res := map[string]interface{}{} for _, pair := range args { line := strings.Split(pair, "=") - if len(line) != 2 { + if len(line) < 2 { return nil, fmt.Errorf("parameter format should be foo=bar, %s not match", pair) } k := strings.TrimSpace(line[0]) - v := strings.TrimSpace(line[1]) + v := strings.TrimSpace(strings.Join(line[1:], "=")) if k != "" && v != "" { res[k] = v } diff --git a/references/cli/addon_test.go b/references/cli/addon_test.go new file mode 100644 index 000000000..de762361c --- /dev/null +++ b/references/cli/addon_test.go @@ -0,0 +1,60 @@ +/* +Copyright 2021 The KubeVela Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cli + +import ( + "testing" + + "gotest.tools/assert" +) + +func TestParseMap(t *testing.T) { + testcase := []struct { + args []string + res map[string]interface{} + nilError bool + }{ + { + args: []string{"key1=value1"}, + res: map[string]interface{}{ + "key1": "value1", + }, + nilError: true, + }, + { + args: []string{"dbUrl=mongodb=mgset-58800212"}, + res: map[string]interface{}{ + "dbUrl": "mongodb=mgset-58800212", + }, + nilError: true, + }, + { + args: []string{"errorparameter"}, + res: nil, + nilError: false, + }, + } + for _, s := range testcase { + r, err := parseToMap(s.args) + assert.DeepEqual(t, s.res, r) + if s.nilError { + assert.NilError(t, err) + } else { + assert.Error(t, err, "parameter format should be foo=bar, errorparameter not match") + } + } +}