1package flags 2 3import ( 4 "testing" 5) 6 7func TestPositional(t *testing.T) { 8 var opts = struct { 9 Value bool `short:"v"` 10 11 Positional struct { 12 Command int 13 Filename string 14 Rest []string 15 } `positional-args:"yes" required:"yes"` 16 }{} 17 18 p := NewParser(&opts, Default) 19 ret, err := p.ParseArgs([]string{"10", "arg_test.go", "a", "b"}) 20 21 if err != nil { 22 t.Fatalf("Unexpected error: %v", err) 23 return 24 } 25 26 if opts.Positional.Command != 10 { 27 t.Fatalf("Expected opts.Positional.Command to be 10, but got %v", opts.Positional.Command) 28 } 29 30 if opts.Positional.Filename != "arg_test.go" { 31 t.Fatalf("Expected opts.Positional.Filename to be \"arg_test.go\", but got %v", opts.Positional.Filename) 32 } 33 34 assertStringArray(t, opts.Positional.Rest, []string{"a", "b"}) 35 assertStringArray(t, ret, []string{}) 36} 37 38func TestPositionalRequired(t *testing.T) { 39 var opts = struct { 40 Value bool `short:"v"` 41 42 Positional struct { 43 Command int 44 Filename string 45 Rest []string 46 } `positional-args:"yes" required:"yes"` 47 }{} 48 49 p := NewParser(&opts, None) 50 _, err := p.ParseArgs([]string{"10"}) 51 52 assertError(t, err, ErrRequired, "the required argument `Filename` was not provided") 53} 54