(t *testing.T)
| 1123 | } |
| 1124 | |
| 1125 | func TestBindPFlagsStringSlice(t *testing.T) { |
| 1126 | tests := []struct { |
| 1127 | Expected []string |
| 1128 | Value string |
| 1129 | }{ |
| 1130 | {[]string{}, ""}, |
| 1131 | {[]string{"jeden"}, "jeden"}, |
| 1132 | {[]string{"dwa", "trzy"}, "dwa,trzy"}, |
| 1133 | {[]string{"cztery", "piec , szesc"}, "cztery,\"piec , szesc\""}, |
| 1134 | } |
| 1135 | |
| 1136 | v := New() // create independent Viper object |
| 1137 | defaultVal := []string{"default"} |
| 1138 | v.SetDefault("stringslice", defaultVal) |
| 1139 | |
| 1140 | for _, testValue := range tests { |
| 1141 | flagSet := pflag.NewFlagSet("test", pflag.ContinueOnError) |
| 1142 | flagSet.StringSlice("stringslice", testValue.Expected, "test") |
| 1143 | |
| 1144 | for _, changed := range []bool{true, false} { |
| 1145 | flagSet.VisitAll(func(f *pflag.Flag) { |
| 1146 | f.Value.Set(testValue.Value) |
| 1147 | f.Changed = changed |
| 1148 | }) |
| 1149 | |
| 1150 | err := v.BindPFlags(flagSet) |
| 1151 | require.NoError(t, err, "error binding flag set") |
| 1152 | |
| 1153 | type TestStr struct { |
| 1154 | StringSlice []string |
| 1155 | } |
| 1156 | val := &TestStr{} |
| 1157 | err = v.Unmarshal(val) |
| 1158 | require.NoError(t, err, "cannot unmarshal") |
| 1159 | if changed { |
| 1160 | assert.Equal(t, testValue.Expected, val.StringSlice) |
| 1161 | assert.Equal(t, testValue.Expected, v.Get("stringslice")) |
| 1162 | } else { |
| 1163 | assert.Equal(t, defaultVal, val.StringSlice) |
| 1164 | } |
| 1165 | } |
| 1166 | } |
| 1167 | } |
| 1168 | |
| 1169 | func TestBindPFlagsStringArray(t *testing.T) { |
| 1170 | tests := []struct { |
nothing calls this directly
no test coverage detected