@@ -168,6 +168,183 @@ func TestFlagsFromEnv(t *testing.T) {
168
168
}
169
169
}
170
170
171
+ type nodocFlag struct {
172
+ Flag
173
+
174
+ Name string
175
+ }
176
+
177
+ func TestFlagStringifying (t * testing.T ) {
178
+ for _ , tc := range []struct {
179
+ name string
180
+ fl Flag
181
+ expected string
182
+ }{
183
+ {
184
+ name : "bool-flag" ,
185
+ fl : & BoolFlag {Name : "vividly" },
186
+ expected : "--vividly\t (default: false)" ,
187
+ },
188
+ {
189
+ name : "bool-flag-with-default-text" ,
190
+ fl : & BoolFlag {Name : "wildly" , DefaultText : "scrambled" },
191
+ expected : "--wildly\t (default: scrambled)" ,
192
+ },
193
+ {
194
+ name : "duration-flag" ,
195
+ fl : & DurationFlag {Name : "scream-for" },
196
+ expected : "--scream-for value\t (default: 0s)" ,
197
+ },
198
+ {
199
+ name : "duration-flag-with-default-text" ,
200
+ fl : & DurationFlag {Name : "feels-about" , DefaultText : "whimsically" },
201
+ expected : "--feels-about value\t (default: whimsically)" ,
202
+ },
203
+ {
204
+ name : "float64-flag" ,
205
+ fl : & Float64Flag {Name : "arduous" },
206
+ expected : "--arduous value\t (default: 0)" ,
207
+ },
208
+ {
209
+ name : "float64-flag-with-default-text" ,
210
+ fl : & Float64Flag {Name : "filibuster" , DefaultText : "42" },
211
+ expected : "--filibuster value\t (default: 42)" ,
212
+ },
213
+ {
214
+ name : "float64-slice-flag" ,
215
+ fl : & Float64SliceFlag {Name : "pizzas" },
216
+ expected : "--pizzas value\t " ,
217
+ },
218
+ {
219
+ name : "float64-slice-flag-with-default-text" ,
220
+ fl : & Float64SliceFlag {Name : "pepperonis" , DefaultText : "shaved" },
221
+ expected : "--pepperonis value\t (default: shaved)" ,
222
+ },
223
+ {
224
+ name : "generic-flag" ,
225
+ fl : & GenericFlag {Name : "yogurt" },
226
+ expected : "--yogurt value\t " ,
227
+ },
228
+ {
229
+ name : "generic-flag-with-default-text" ,
230
+ fl : & GenericFlag {Name : "ricotta" , DefaultText : "plops" },
231
+ expected : "--ricotta value\t (default: plops)" ,
232
+ },
233
+ {
234
+ name : "int-flag" ,
235
+ fl : & IntFlag {Name : "grubs" },
236
+ expected : "--grubs value\t (default: 0)" ,
237
+ },
238
+ {
239
+ name : "int-flag-with-default-text" ,
240
+ fl : & IntFlag {Name : "poisons" , DefaultText : "11ty" },
241
+ expected : "--poisons value\t (default: 11ty)" ,
242
+ },
243
+ {
244
+ name : "int-slice-flag" ,
245
+ fl : & IntSliceFlag {Name : "pencils" },
246
+ expected : "--pencils value\t " ,
247
+ },
248
+ {
249
+ name : "int-slice-flag-with-default-text" ,
250
+ fl : & IntFlag {Name : "pens" , DefaultText : "-19" },
251
+ expected : "--pens value\t (default: -19)" ,
252
+ },
253
+ {
254
+ name : "int64-flag" ,
255
+ fl : & Int64Flag {Name : "flume" },
256
+ expected : "--flume value\t (default: 0)" ,
257
+ },
258
+ {
259
+ name : "int64-flag-with-default-text" ,
260
+ fl : & Int64Flag {Name : "shattering" , DefaultText : "22" },
261
+ expected : "--shattering value\t (default: 22)" ,
262
+ },
263
+ {
264
+ name : "int64-slice-flag" ,
265
+ fl : & Int64SliceFlag {Name : "drawers" },
266
+ expected : "--drawers value\t " ,
267
+ },
268
+ {
269
+ name : "int64-slice-flag-with-default-text" ,
270
+ fl : & Int64SliceFlag {Name : "handles" , DefaultText : "-2" },
271
+ expected : "--handles value\t (default: -2)" ,
272
+ },
273
+ {
274
+ name : "path-flag" ,
275
+ fl : & PathFlag {Name : "soup" },
276
+ expected : "--soup value\t " ,
277
+ },
278
+ {
279
+ name : "path-flag-with-default-text" ,
280
+ fl : & PathFlag {Name : "stew" , DefaultText : "charred/beans" },
281
+ expected : "--stew value\t (default: charred/beans)" ,
282
+ },
283
+ {
284
+ name : "string-flag" ,
285
+ fl : & StringFlag {Name : "arf-sound" },
286
+ expected : "--arf-sound value\t " ,
287
+ },
288
+ {
289
+ name : "string-flag-with-default-text" ,
290
+ fl : & StringFlag {Name : "woof-sound" , DefaultText : "urp" },
291
+ expected : "--woof-sound value\t (default: urp)" ,
292
+ },
293
+ {
294
+ name : "string-slice-flag" ,
295
+ fl : & StringSliceFlag {Name : "meow-sounds" },
296
+ expected : "--meow-sounds value\t " ,
297
+ },
298
+ {
299
+ name : "string-slice-flag-with-default-text" ,
300
+ fl : & StringSliceFlag {Name : "moo-sounds" , DefaultText : "awoo" },
301
+ expected : "--moo-sounds value\t (default: awoo)" ,
302
+ },
303
+ {
304
+ name : "timestamp-flag" ,
305
+ fl : & TimestampFlag {Name : "eating" },
306
+ expected : "--eating value\t " ,
307
+ },
308
+ {
309
+ name : "timestamp-flag-with-default-text" ,
310
+ fl : & TimestampFlag {Name : "sleeping" , DefaultText : "earlier" },
311
+ expected : "--sleeping value\t (default: earlier)" ,
312
+ },
313
+ {
314
+ name : "uint-flag" ,
315
+ fl : & UintFlag {Name : "jars" },
316
+ expected : "--jars value\t (default: 0)" ,
317
+ },
318
+ {
319
+ name : "uint-flag-with-default-text" ,
320
+ fl : & UintFlag {Name : "bottles" , DefaultText : "99" },
321
+ expected : "--bottles value\t (default: 99)" ,
322
+ },
323
+ {
324
+ name : "uint64-flag" ,
325
+ fl : & Uint64Flag {Name : "cans" },
326
+ expected : "--cans value\t (default: 0)" ,
327
+ },
328
+ {
329
+ name : "uint64-flag-with-default-text" ,
330
+ fl : & UintFlag {Name : "tubes" , DefaultText : "13" },
331
+ expected : "--tubes value\t (default: 13)" ,
332
+ },
333
+ {
334
+ name : "nodoc-flag" ,
335
+ fl : & nodocFlag {Name : "scarecrow" },
336
+ expected : "" ,
337
+ },
338
+ } {
339
+ t .Run (tc .name , func (ct * testing.T ) {
340
+ s := stringifyFlag (tc .fl )
341
+ if s != tc .expected {
342
+ ct .Errorf ("stringified flag %q does not match expected %q" , s , tc .expected )
343
+ }
344
+ })
345
+ }
346
+ }
347
+
171
348
var stringFlagTests = []struct {
172
349
name string
173
350
aliases []string
0 commit comments