OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / spf13 / viper / flags_test.go
diff --git a/vendor/github.com/spf13/viper/flags_test.go b/vendor/github.com/spf13/viper/flags_test.go
new file mode 100644 (file)
index 0000000..0b976b6
--- /dev/null
@@ -0,0 +1,65 @@
+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"))
+}