...
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 BindFlagValue("testvalue", flagValue)
62 flag.Value.Set("testing_mutate")
63 flag.Changed = true
64
65 assert.Equal(t, "testing_mutate", Get("testvalue"))
66 }
67
View as plain text