TestStringFlagTerminator tests the string flag "--flag" with "--" terminator.
(t *testing.T)
| 5091 | |
| 5092 | // TestStringFlagTerminator tests the string flag "--flag" with "--" terminator. |
| 5093 | func TestStringFlagTerminator(t *testing.T) { |
| 5094 | tests := []struct { |
| 5095 | name string |
| 5096 | input []string |
| 5097 | expectFlag string |
| 5098 | expectArgs []string |
| 5099 | expectErr bool |
| 5100 | errorContain string |
| 5101 | }{ |
| 5102 | { |
| 5103 | name: "flag and args after terminator", |
| 5104 | input: []string{"test", "--flag", "x", "--", "test", "a1", "a2", "a3"}, |
| 5105 | expectFlag: "x", |
| 5106 | expectArgs: []string{"test", "a1", "a2", "a3"}, |
| 5107 | }, |
| 5108 | /* { |
| 5109 | name: "missing flag value due to terminator", |
| 5110 | input: []string{"test", "--flag", "--", "x"}, |
| 5111 | expectErr: true, |
| 5112 | errorContain: "flag needs an argument", |
| 5113 | },*/ |
| 5114 | { |
| 5115 | name: "terminator with no trailing args", |
| 5116 | input: []string{"test", "--flag", "x", "--"}, |
| 5117 | expectFlag: "x", |
| 5118 | expectArgs: []string{}, |
| 5119 | }, |
| 5120 | { |
| 5121 | name: "no terminator, only flag", |
| 5122 | input: []string{"test", "--flag", "x"}, |
| 5123 | expectFlag: "x", |
| 5124 | expectArgs: []string{}, |
| 5125 | }, |
| 5126 | { |
| 5127 | name: "flag defined after --", |
| 5128 | input: []string{"test", "--", "x", "--flag=value"}, |
| 5129 | expectFlag: "", |
| 5130 | expectArgs: []string{"x", "--flag=value"}, |
| 5131 | }, |
| 5132 | { |
| 5133 | name: "flag and without --", |
| 5134 | input: []string{"test", "--flag", "value", "x"}, |
| 5135 | expectFlag: "value", |
| 5136 | expectArgs: []string{"x"}, |
| 5137 | }, |
| 5138 | } |
| 5139 | |
| 5140 | for _, tc := range tests { |
| 5141 | t.Run(tc.name, func(t *testing.T) { |
| 5142 | var flagVal string |
| 5143 | var argsVal []string |
| 5144 | |
| 5145 | // build minimal command with a StringFlag "flag" |
| 5146 | cmd := &Command{ |
| 5147 | Name: "test", |
| 5148 | Flags: []Flag{ |
| 5149 | &StringFlag{ |
| 5150 | Name: "flag", |