Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions string_array.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,17 @@ func newStringArrayValue(val []string, p *[]string) *stringArrayValue {
}

func (s *stringArrayValue) Set(val string) error {
values := []string{}
if val != "" {
values = append(values, val)
}

if !s.changed {
*s.value = []string{val}
s.changed = true
*s.value = values
} else {
*s.value = append(*s.value, val)
*s.value = append(*s.value, values...)
}
s.changed = true
return nil
}

Expand Down
53 changes: 53 additions & 0 deletions string_array_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,35 @@ func TestEmptySAValue(t *testing.T) {
if err != nil {
t.Fatal("expected no error; got", err)
}
if len(sa) != 0 {
t.Fatalf("got sa %v with len=%d but expected length=0", sa, len(sa))
}
if sa == nil {
t.Fatal("expected sa to be a non-nil empty slice")
}

getSA, err := f.GetStringArray("sa")
if err != nil {
t.Fatal("got an error from GetStringArray():", err)
}
if len(getSA) != 0 {
t.Fatalf("got sa %v with len=%d but expected length=0", getSA, len(getSA))
}
}

func TestEmptySASeparateValue(t *testing.T) {
var sa []string
f := setUpSAFlagSet(&sa)
err := f.Parse([]string{"--sa", ""})
if err != nil {
t.Fatal("expected no error; got", err)
}
if len(sa) != 0 {
t.Fatalf("got sa %v with len=%d but expected length=0", sa, len(sa))
}
if sa == nil {
t.Fatal("expected sa to be a non-nil empty slice")
}

getSA, err := f.GetStringArray("sa")
if err != nil {
Expand All @@ -55,6 +84,30 @@ func TestEmptySAValue(t *testing.T) {
}
}

func TestEmptySASeparateValueCommandLine(t *testing.T) {
ResetForTesting(func() {})

var sa []string
StringArrayVar(&sa, "sa", []string{}, "Command separated list!")
if err := CommandLine.Parse([]string{"--sa", ""}); err != nil {
t.Fatal("expected no error; got", err)
}
if len(sa) != 0 {
t.Fatalf("got sa %v with len=%d but expected length=0", sa, len(sa))
}
if sa == nil {
t.Fatal("expected sa to be a non-nil empty slice")
}

getSA, err := GetCommandLine().GetStringArray("sa")
if err != nil {
t.Fatal("got an error from GetStringArray():", err)
}
if len(getSA) != 0 {
t.Fatalf("got sa %v with len=%d but expected length=0", getSA, len(getSA))
}
}

func TestSADefault(t *testing.T) {
var sa []string
f := setUpSAFlagSetWithDefault(&sa)
Expand Down
Loading