fix: preserve plugin args after kube TLS boolean flag

Signed-off-by: ulofiai <monsterking@tutamail.com>
pull/32526/head
ulofiai 2 months ago
parent f3d68cdbea
commit 382e1992df

@ -191,6 +191,16 @@ func manuallyProcessArgs(args []string) ([]string, []string) {
switch a := args[i]; a {
case "--debug":
known = append(known, a)
case "--kube-insecure-skip-tls-verify":
known = append(known, a)
// Boolean flags do not require a value. Only consume the next
// argument when it is an explicit boolean value.
if i+1 < len(args) {
if _, err := strconv.ParseBool(args[i+1]); err == nil {
known[len(known)-1] += "=" + args[i+1]
i++
}
}
case isKnown(a):
known = append(known, a)
i++

@ -79,6 +79,43 @@ func TestManuallyProcessArgs(t *testing.T) {
}
}
func TestManuallyProcessArgsBooleanFlag(t *testing.T) {
tests := []struct {
name string
input []string
expectKnown []string
expectUnknown []string
}{
{
name: "bare boolean flag",
input: []string{"--kube-insecure-skip-tls-verify", "--version", "1.0.3"},
expectKnown: []string{"--kube-insecure-skip-tls-verify"},
expectUnknown: []string{"--version", "1.0.3"},
},
{
name: "separate boolean value",
input: []string{"--kube-insecure-skip-tls-verify", "false", "--version", "1.0.3"},
expectKnown: []string{"--kube-insecure-skip-tls-verify=false"},
expectUnknown: []string{"--version", "1.0.3"},
},
{
name: "inline boolean value",
input: []string{"--kube-insecure-skip-tls-verify=true", "--version", "1.0.3"},
expectKnown: []string{"--kube-insecure-skip-tls-verify=true"},
expectUnknown: []string{"--version", "1.0.3"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
known, unknown := manuallyProcessArgs(tt.input)
assert.Equal(t, tt.expectKnown, known)
assert.Equal(t, tt.expectUnknown, unknown)
})
}
}
func TestLoadCLIPlugins(t *testing.T) {
settings.PluginsDirectory = "testdata/helmhome/helm/plugins"
settings.RepositoryConfig = "testdata/helmhome/helm/repositories.yaml"

Loading…
Cancel
Save