diff options
| author | Alex Flint <[email protected]> | 2022-02-09 06:31:34 -0800 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2022-02-09 06:31:34 -0800 |
| commit | 5fb236a65dd1edf0de556d5bac83a1103b9cf73a (patch) | |
| tree | 0d202fcd6c6a194e8c7c14bbc3af3ed386938fe6 /usage_test.go | |
| parent | d3706100bf0cfef2b8f6f9119889541c302d72d1 (diff) | |
fix bracketing for non-required positionals
Diffstat (limited to 'usage_test.go')
| -rw-r--r-- | usage_test.go | 82 |
1 files changed, 74 insertions, 8 deletions
diff --git a/usage_test.go b/usage_test.go index f790e34..1744536 100644 --- a/usage_test.go +++ b/usage_test.go @@ -59,7 +59,7 @@ Options: ` var args struct { - Input string `arg:"positional"` + Input string `arg:"positional,required"` Output []string `arg:"positional" help:"list of outputs"` Name string `help:"name to use"` Value int `help:"secret value"` @@ -141,10 +141,10 @@ func TestUsageCannotMarshalToString(t *testing.T) { } func TestUsageLongPositionalWithHelp_legacyForm(t *testing.T) { - expectedUsage := "Usage: example VERYLONGPOSITIONALWITHHELP" + expectedUsage := "Usage: example [VERYLONGPOSITIONALWITHHELP]" expectedHelp := ` -Usage: example VERYLONGPOSITIONALWITHHELP +Usage: example [VERYLONGPOSITIONALWITHHELP] Positional arguments: VERYLONGPOSITIONALWITHHELP @@ -170,10 +170,10 @@ Options: } func TestUsageLongPositionalWithHelp_newForm(t *testing.T) { - expectedUsage := "Usage: example VERYLONGPOSITIONALWITHHELP" + expectedUsage := "Usage: example [VERYLONGPOSITIONALWITHHELP]" expectedHelp := ` -Usage: example VERYLONGPOSITIONALWITHHELP +Usage: example [VERYLONGPOSITIONALWITHHELP] Positional arguments: VERYLONGPOSITIONALWITHHELP @@ -285,8 +285,74 @@ Options: assert.Equal(t, expectedUsage, strings.TrimSpace(usage.String())) } +func TestUsageForRequiredPositionals(t *testing.T) { + expectedUsage := "Usage: example REQUIRED1 REQUIRED2\n" + var args struct { + Required1 string `arg:"positional,required"` + Required2 string `arg:"positional,required"` + } + + p, err := NewParser(Config{Program: "example"}, &args) + require.NoError(t, err) + + var usage bytes.Buffer + p.WriteUsage(&usage) + assert.Equal(t, expectedUsage, usage.String()) +} + +func TestUsageForMixedPositionals(t *testing.T) { + expectedUsage := "Usage: example REQUIRED1 REQUIRED2 [OPTIONAL1 [OPTIONAL2]]\n" + var args struct { + Required1 string `arg:"positional,required"` + Required2 string `arg:"positional,required"` + Optional1 string `arg:"positional"` + Optional2 string `arg:"positional"` + } + + p, err := NewParser(Config{Program: "example"}, &args) + require.NoError(t, err) + + var usage bytes.Buffer + p.WriteUsage(&usage) + assert.Equal(t, expectedUsage, usage.String()) +} + +func TestUsageForRepeatedPositionals(t *testing.T) { + expectedUsage := "Usage: example REQUIRED1 REQUIRED2 REPEATED [REPEATED ...]\n" + var args struct { + Required1 string `arg:"positional,required"` + Required2 string `arg:"positional,required"` + Repeated []string `arg:"positional,required"` + } + + p, err := NewParser(Config{Program: "example"}, &args) + require.NoError(t, err) + + var usage bytes.Buffer + p.WriteUsage(&usage) + assert.Equal(t, expectedUsage, usage.String()) +} + +func TestUsageForMixedAndRepeatedPositionals(t *testing.T) { + expectedUsage := "Usage: example REQUIRED1 REQUIRED2 [OPTIONAL1 [OPTIONAL2 [REPEATED [REPEATED ...]]]]\n" + var args struct { + Required1 string `arg:"positional,required"` + Required2 string `arg:"positional,required"` + Optional1 string `arg:"positional"` + Optional2 string `arg:"positional"` + Repeated []string `arg:"positional"` + } + + p, err := NewParser(Config{Program: "example"}, &args) + require.NoError(t, err) + + var usage bytes.Buffer + p.WriteUsage(&usage) + assert.Equal(t, expectedUsage, usage.String()) +} + func TestRequiredMultiplePositionals(t *testing.T) { - expectedUsage := "Usage: example REQUIREDMULTIPLE [REQUIREDMULTIPLE ...]" + expectedUsage := "Usage: example REQUIREDMULTIPLE [REQUIREDMULTIPLE ...]\n" expectedHelp := ` Usage: example REQUIREDMULTIPLE [REQUIREDMULTIPLE ...] @@ -301,7 +367,7 @@ Options: RequiredMultiple []string `arg:"positional,required" help:"required multiple positional"` } - p, err := NewParser(Config{}, &args) + p, err := NewParser(Config{Program: "example"}, &args) require.NoError(t, err) var help bytes.Buffer @@ -310,7 +376,7 @@ Options: var usage bytes.Buffer p.WriteUsage(&usage) - assert.Equal(t, expectedUsage, strings.TrimSpace(usage.String())) + assert.Equal(t, expectedUsage, usage.String()) } func TestUsageWithNestedSubcommands(t *testing.T) { |
