github.com/ccpgames/viper@v1.1.1/flags_test.go (about) 1 package viper 2 3 import ( 4 "testing" 5 6 "github.com/spf13/pflag" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestBindFlagValueSet(t *testing.T) { 11 flagSet := pflag.NewFlagSet("test", pflag.ContinueOnError) 12 13 var testValues = map[string]*string{ 14 "host": nil, 15 "port": nil, 16 "endpoint": nil, 17 } 18 19 var mutatedTestValues = map[string]string{ 20 "host": "localhost", 21 "port": "6060", 22 "endpoint": "/public", 23 } 24 25 for name := range testValues { 26 testValues[name] = flagSet.String(name, "", "test") 27 } 28 29 flagValueSet := pflagValueSet{flagSet} 30 31 err := BindFlagValues(flagValueSet) 32 if err != nil { 33 t.Fatalf("error binding flag set, %v", err) 34 } 35 36 flagSet.VisitAll(func(flag *pflag.Flag) { 37 flag.Value.Set(mutatedTestValues[flag.Name]) 38 flag.Changed = true 39 }) 40 41 for name, expected := range mutatedTestValues { 42 assert.Equal(t, Get(name), expected) 43 } 44 } 45 46 func TestBindFlagValue(t *testing.T) { 47 var testString = "testing" 48 var testValue = newStringValue(testString, &testString) 49 50 flag := &pflag.Flag{ 51 Name: "testflag", 52 Value: testValue, 53 Changed: false, 54 } 55 56 flagValue := pflagValue{flag} 57 BindFlagValue("testvalue", flagValue) 58 59 assert.Equal(t, testString, Get("testvalue")) 60 61 flag.Value.Set("testing_mutate") 62 flag.Changed = true //hack for pflag usage 63 64 assert.Equal(t, "testing_mutate", Get("testvalue")) 65 }