From 4bae08c2e2467b5c63d6a809a379058e2e5aef96 Mon Sep 17 00:00:00 2001 From: Kunshuai Zhu Date: Wed, 16 Feb 2022 14:20:37 +0800 Subject: [PATCH] Fix: Optimize error msg of addon enable/upgrade local path (#3222) * Optimize error msg of addon enable/upgrade local path Signed-off-by: zhukunshuai * Fix and add unit test Signed-off-by: zhukunshuai * Run make reviewable to include all changes Signed-off-by: zhukunshuai * remove test case for windows Signed-off-by: zhukunshuai * fix unit test. Signed-off-by: zhukunshuai --- references/cli/addon.go | 8 ++++++ references/cli/addon_test.go | 55 ++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/references/cli/addon.go b/references/cli/addon.go index b26fd593b..25a51035b 100644 --- a/references/cli/addon.go +++ b/references/cli/addon.go @@ -148,6 +148,10 @@ func NewAddonEnableCommand(c common.Args, ioStream cmdutil.IOStreams) *cobra.Com return err } } else { + if filepath.IsAbs(addonOrDir) || strings.HasPrefix(addonOrDir, ".") || strings.HasSuffix(addonOrDir, "/") { + return fmt.Errorf("addon directory %s not found in local", addonOrDir) + } + err = enableAddon(ctx, k8sClient, config, name, addonArgs) if err != nil { return err @@ -222,6 +226,10 @@ func NewAddonUpgradeCommand(c common.Args, ioStream cmdutil.IOStreams) *cobra.Co return err } } else { + if filepath.IsAbs(addonOrDir) || strings.HasPrefix(addonOrDir, ".") || strings.HasSuffix(addonOrDir, "/") { + return fmt.Errorf("addon directory %s not found in local", addonOrDir) + } + _, err = pkgaddon.FetchAddonRelatedApp(context.Background(), k8sClient, addonOrDir) if err != nil { return errors.Wrapf(err, "cannot fetch addon related addon %s", addonOrDir) diff --git a/references/cli/addon_test.go b/references/cli/addon_test.go index 24df5b245..c854d3418 100644 --- a/references/cli/addon_test.go +++ b/references/cli/addon_test.go @@ -19,6 +19,9 @@ package cli import ( "testing" + "github.com/oam-dev/kubevela/pkg/utils/common" + "github.com/oam-dev/kubevela/pkg/utils/util" + "gotest.tools/assert" ) @@ -70,3 +73,55 @@ func TestParseMap(t *testing.T) { } } } + +func TestAddonEnableCmdWithErrLocalPath(t *testing.T) { + testcase := []struct { + args []string + errMsg string + }{ + { + args: []string{"./a_local_path"}, + errMsg: "addon directory ./a_local_path not found in local", + }, + { + args: []string{"a_local_path/"}, + errMsg: "addon directory a_local_path/ not found in local", + }, + } + + ioStream := util.IOStreams{} + commandArgs := common.Args{} + cmd := NewAddonEnableCommand(commandArgs, ioStream) + + for _, s := range testcase { + cmd.SetArgs(s.args) + err := cmd.Execute() + assert.Error(t, err, s.errMsg) + } +} + +func TestAddonUpgradeCmdWithErrLocalPath(t *testing.T) { + testcase := []struct { + args []string + errMsg string + }{ + { + args: []string{"./a_local_path"}, + errMsg: "addon directory ./a_local_path not found in local", + }, + { + args: []string{"a_local_path/"}, + errMsg: "addon directory a_local_path/ not found in local", + }, + } + + ioStream := util.IOStreams{} + commandArgs := common.Args{} + cmd := NewAddonUpgradeCommand(commandArgs, ioStream) + + for _, s := range testcase { + cmd.SetArgs(s.args) + err := cmd.Execute() + assert.Error(t, err, s.errMsg) + } +}