diff --git a/cli/cliflag/cliflag.go b/cli/cliflag/cliflag.go index d2f5e4e58601a..819fadaddc50f 100644 --- a/cli/cliflag/cliflag.go +++ b/cli/cliflag/cliflag.go @@ -40,7 +40,11 @@ func StringVarP(flagset *pflag.FlagSet, p *string, name string, shorthand string func StringArrayVarP(flagset *pflag.FlagSet, ptr *[]string, name string, shorthand string, env string, def []string, usage string) { val, ok := os.LookupEnv(env) if ok { - def = strings.Split(val, ",") + if val == "" { + def = []string{} + } else { + def = strings.Split(val, ",") + } } flagset.StringArrayVarP(ptr, name, shorthand, def, usage) } diff --git a/cli/cliflag/cliflag_test.go b/cli/cliflag/cliflag_test.go index 96b2c321c7442..051707c97cbc7 100644 --- a/cli/cliflag/cliflag_test.go +++ b/cli/cliflag/cliflag_test.go @@ -96,6 +96,16 @@ func TestCliflag(t *testing.T) { require.Equal(t, []string{"wow", "test"}, got) }) + t.Run("StringArrayEnvVarEmpty", func(t *testing.T) { + var ptr []string + flagset, name, shorthand, env, usage := randomFlag() + t.Setenv(env, "") + cliflag.StringArrayVarP(flagset, &ptr, name, shorthand, env, nil, usage) + got, err := flagset.GetStringArray(name) + require.NoError(t, err) + require.Equal(t, []string{}, got) + }) + t.Run("IntDefault", func(t *testing.T) { var ptr uint8 flagset, name, shorthand, env, usage := randomFlag()