diff options
| author | Alex Flint <[email protected]> | 2024-04-02 12:10:52 -0400 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2024-04-02 12:10:52 -0400 |
| commit | 8a917260c38a68937883b35da0851d3da179d9a2 (patch) | |
| tree | 33c7d836edfa61e5b891e7ac4a25c0977643a2bf | |
| parent | 3ddfffdcd33a4419f68581e515113dbfbcfaaa7d (diff) | |
add a test case with single-level subcommands
| -rw-r--r-- | usage_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/usage_test.go b/usage_test.go index b6ce8e5..f613471 100644 --- a/usage_test.go +++ b/usage_test.go @@ -448,6 +448,50 @@ Options: assert.Equal(t, expectedUsage, usage.String()) } +func TestUsageWithSubcommands(t *testing.T) { + expectedUsage := "Usage: example child [--values VALUES]" + + expectedHelp := ` +Usage: example child [--values VALUES] + +Options: + --values VALUES Values + +Global options: + --verbose, -v verbosity level + --help, -h display this help and exit +` + + var args struct { + Verbose bool `arg:"-v" help:"verbosity level"` + Child *struct { + Values []float64 `help:"Values"` + } `arg:"subcommand:child"` + } + + os.Args[0] = "example" + p, err := NewParser(Config{}, &args) + require.NoError(t, err) + + _ = p.Parse([]string{"child"}) + + var help bytes.Buffer + p.WriteHelp(&help) + assert.Equal(t, expectedHelp[1:], help.String()) + + var help2 bytes.Buffer + p.WriteHelpForSubcommand(&help2, "child") + assert.Equal(t, expectedHelp[1:], help2.String()) + + var usage bytes.Buffer + p.WriteUsage(&usage) + assert.Equal(t, expectedUsage, strings.TrimSpace(usage.String())) + + var usage2 bytes.Buffer + p.WriteUsageForSubcommand(&usage2, "child") + assert.Equal(t, expectedUsage, strings.TrimSpace(usage2.String())) +} + func TestUsageWithNestedSubcommands(t *testing.T) { expectedUsage := "Usage: example child nested [--enable] OUTPUT" |
