8000 Add tests around flag stringifying for all modified types · urfave/cli@9fd3cc9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9fd3cc9

Browse files
committed
Add tests around flag stringifying for all modified types
1 parent 79ed8b5 commit 9fd3cc9

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

flag_test.go

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,183 @@ func TestFlagsFromEnv(t *testing.T) {
168168
}
169169
}
170170

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+
171348
var stringFlagTests = []struct {
172349
name string
173350
aliases []string

0 commit comments

Comments
 (0)
0