OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / spf13 / viper / flags_test.go
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 }