| 1090 | } |
| 1091 | |
| 1092 | func TestBindPFlags(t *testing.T) { |
| 1093 | v := New() // create independent Viper object |
| 1094 | flagSet := pflag.NewFlagSet("test", pflag.ContinueOnError) |
| 1095 | |
| 1096 | testValues := map[string]*string{ |
| 1097 | "host": nil, |
| 1098 | "port": nil, |
| 1099 | "endpoint": nil, |
| 1100 | } |
| 1101 | |
| 1102 | mutatedTestValues := map[string]string{ |
| 1103 | "host": "localhost", |
| 1104 | "port": "6060", |
| 1105 | "endpoint": "/public", |
| 1106 | } |
| 1107 | |
| 1108 | for name := range testValues { |
| 1109 | testValues[name] = flagSet.String(name, "", "test") |
| 1110 | } |
| 1111 | |
| 1112 | err := v.BindPFlags(flagSet) |
| 1113 | require.NoError(t, err, "error binding flag set") |
| 1114 | |
| 1115 | flagSet.VisitAll(func(flag *pflag.Flag) { |
| 1116 | flag.Value.Set(mutatedTestValues[flag.Name]) |
| 1117 | flag.Changed = true |
| 1118 | }) |
| 1119 | |
| 1120 | for name, expected := range mutatedTestValues { |
| 1121 | assert.Equal(t, expected, v.Get(name)) |
| 1122 | } |
| 1123 | } |
| 1124 | |
| 1125 | func TestBindPFlagsStringSlice(t *testing.T) { |
| 1126 | tests := []struct { |