summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse_test.go28
-rw-r--r--usage_test.go22
2 files changed, 50 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go
index 267e57c..a646f2b 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -250,6 +250,15 @@ func TestRequiredPositional(t *testing.T) {
assert.Error(t, err)
}
+func TestRequiredPositionalMultiple(t *testing.T) {
+ var args struct {
+ Input string `arg:"positional"`
+ Multiple []string `arg:"positional,required"`
+ }
+ err := parse("foo", &args)
+ assert.Error(t, err)
+}
+
func TestTooManyPositional(t *testing.T) {
var args struct {
Input string `arg:"positional"`
@@ -270,6 +279,17 @@ func TestMultiple(t *testing.T) {
assert.Equal(t, []string{"x", "y", "z"}, args.Bar)
}
+func TestMultiplePositionals(t *testing.T) {
+ var args struct {
+ Input string `arg:"positional"`
+ Multiple []string `arg:"positional,required"`
+ }
+ err := parse("foo a b c", &args)
+ assert.NoError(t, err)
+ assert.Equal(t, "foo", args.Input)
+ assert.Equal(t, []string{"a", "b", "c"}, args.Multiple)
+}
+
func TestMultipleWithEq(t *testing.T) {
var args struct {
Foo []int
@@ -321,6 +341,14 @@ func TestMissingRequired(t *testing.T) {
assert.Error(t, err)
}
+func TestMissingRequiredMultiplePositional(t *testing.T) {
+ var args struct {
+ X []string `arg:"positional, required"`
+ }
+ err := parse("x", &args)
+ assert.Error(t, err)
+}
+
func TestMissingValue(t *testing.T) {
var args struct {
Foo string
diff --git a/usage_test.go b/usage_test.go
index bf78a80..1bb1071 100644
--- a/usage_test.go
+++ b/usage_test.go
@@ -157,3 +157,25 @@ Options:
t.Fail()
}
}
+
+func TestRequiredMultiplePositionals(t *testing.T) {
+ expectedHelp := `Usage: example REQUIREDMULTIPLE [REQUIREDMULTIPLE ...]
+
+Positional arguments:
+ REQUIREDMULTIPLE required multiple positional
+
+Options:
+ --help, -h display this help and exit
+`
+ var args struct {
+ RequiredMultiple []string `arg:"positional,required,help:required multiple positional"`
+ }
+
+ p, err := NewParser(Config{}, &args)
+ require.NoError(t, err)
+
+ os.Args[0] = "example"
+ var help bytes.Buffer
+ p.WriteHelp(&help)
+ assert.Equal(t, expectedHelp, help.String())
+}