Skip to content

Commit

Permalink
Merge pull request #1127 from sgoroshko/master
Browse files Browse the repository at this point in the history
fix #1121(StringSliceFlag set default value into destination)
  • Loading branch information
coilysiren committed Jun 4, 2020
2 parents 477292c + 10fe017 commit b190f2d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
7 changes: 7 additions & 0 deletions flag_string_slice.go
Expand Up @@ -116,6 +116,13 @@ func (f *StringSliceFlag) GetValue() string {

// Apply populates the flag given the flag set and environment
func (f *StringSliceFlag) Apply(set *flag.FlagSet) error {

if f.Destination != nil && f.Value != nil {
f.Destination.slice = make([]string, len(f.Value.slice))
copy(f.Destination.slice, f.Value.slice)

}

if val, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok {
f.Value = &StringSlice{}
destination := f.Value
Expand Down
12 changes: 12 additions & 0 deletions flag_test.go
Expand Up @@ -386,6 +386,18 @@ func TestStringSliceFlagApply_SetsAllNames(t *testing.T) {
expect(t, err, nil)
}

func TestStringSliceFlagApply_DefaultValueWithDestination(t *testing.T) {
defValue := []string{"UA", "US"}

fl := StringSliceFlag{Name: "country", Value: NewStringSlice(defValue...), Destination: NewStringSlice("CA")}
set := flag.NewFlagSet("test", 0)
_ = fl.Apply(set)

err := set.Parse([]string{})
expect(t, err, nil)
expect(t, defValue, fl.Destination.Value())
}

var intFlagTests = []struct {
name string
expected string
Expand Down

0 comments on commit b190f2d

Please sign in to comment.