From ddefb8cb4edda0779f952be8a3fb37b0d9976c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A5=9A=E5=B2=B3?= Date: Tue, 25 Jan 2022 12:07:02 +0800 Subject: [PATCH] fix: vela addnon enable cannot support = MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 楚岳 --- references/cli/addon.go | 4 +-- references/cli/addon_test.go | 60 ++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 references/cli/addon_test.go 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") + } + } +}