|  | package viper | 
|  |  | 
|  | import ( | 
|  | "testing" | 
|  |  | 
|  | "github.com/spf13/pflag" | 
|  | "github.com/stretchr/testify/assert" | 
|  | ) | 
|  |  | 
|  | func TestBindFlagValueSet(t *testing.T) { | 
|  | flagSet := pflag.NewFlagSet("test", pflag.ContinueOnError) | 
|  |  | 
|  | var testValues = map[string]*string{ | 
|  | "host":     nil, | 
|  | "port":     nil, | 
|  | "endpoint": nil, | 
|  | } | 
|  |  | 
|  | var mutatedTestValues = map[string]string{ | 
|  | "host":     "localhost", | 
|  | "port":     "6060", | 
|  | "endpoint": "/public", | 
|  | } | 
|  |  | 
|  | for name := range testValues { | 
|  | testValues[name] = flagSet.String(name, "", "test") | 
|  | } | 
|  |  | 
|  | flagValueSet := pflagValueSet{flagSet} | 
|  |  | 
|  | err := BindFlagValues(flagValueSet) | 
|  | if err != nil { | 
|  | t.Fatalf("error binding flag set, %v", err) | 
|  | } | 
|  |  | 
|  | flagSet.VisitAll(func(flag *pflag.Flag) { | 
|  | flag.Value.Set(mutatedTestValues[flag.Name]) | 
|  | flag.Changed = true | 
|  | }) | 
|  |  | 
|  | for name, expected := range mutatedTestValues { | 
|  | assert.Equal(t, Get(name), expected) | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestBindFlagValue(t *testing.T) { | 
|  | var testString = "testing" | 
|  | var testValue = newStringValue(testString, &testString) | 
|  |  | 
|  | flag := &pflag.Flag{ | 
|  | Name:    "testflag", | 
|  | Value:   testValue, | 
|  | Changed: false, | 
|  | } | 
|  |  | 
|  | flagValue := pflagValue{flag} | 
|  | BindFlagValue("testvalue", flagValue) | 
|  |  | 
|  | assert.Equal(t, testString, Get("testvalue")) | 
|  |  | 
|  | flag.Value.Set("testing_mutate") | 
|  | flag.Changed = true //hack for pflag usage | 
|  |  | 
|  | assert.Equal(t, "testing_mutate", Get("testvalue")) | 
|  |  | 
|  | } |