@@ -194,6 +194,118 @@ func TestFlagSimple2(t *testing.T) {
194
194
}
195
195
}
196
196
197
+ func TestLongFlagEqualChar (t * testing.T ) {
198
+ testArgs := []string {"progname" , "--flag1=test1" , "--flag2=2" , "--flag3" , "test3" , "--flag4=a=test4" , "--flag5=a" }
199
+
200
+ p := NewParser ("" , "description" )
201
+ flag1 := p .String ("" , "flag1" , nil )
202
+ flag2 := p .Int ("" , "flag2" , nil )
203
+ flag3 := p .String ("" , "flag3" , nil )
204
+ flag4 := p .String ("" , "flag4=a" , nil )
205
+ flag5 := p .Flag ("" , "flag5=a" , nil )
206
+
207
+ err := p .Parse (testArgs )
208
+ if err != nil {
209
+ t .Errorf ("Test %s failed with error: %s" , t .Name (), err .Error ())
210
+ return
211
+ }
212
+
213
+ if flag1 == nil {
214
+ t .Errorf ("Test %s failed with flag1 being nil pointer" , t .Name ())
215
+ return
216
+ }
217
+
218
+ if flag2 == nil {
219
+ t .Errorf ("Test %s failed with flag2 being nil pointer" , t .Name ())
220
+ return
221
+ }
222
+
223
+ if flag3 == nil {
224
+ t .Errorf ("Test %s failed with flag3 being nil pointer" , t .Name ())
225
+ return
226
+ }
227
+
228
+ if flag4 == nil {
229
+ t .Errorf ("Test %s failed with flag4 being nil pointer" , t .Name ())
230
+ return
231
+ }
232
+
233
+ if flag5 == nil {
234
+ t .Errorf ("Test %s failed with flag5 being nil pointer" , t .Name ())
235
+ return
236
+ }
237
+
238
+ if * flag1 != "test1" {
239
+ t .Errorf ("Test %s failed with flag1 being false" , t .Name ())
240
+ return
241
+ }
242
+
243
+ if * flag2 != 2 {
244
+ t .Errorf ("Test %s failed with flag2 being true" , t .Name ())
245
+ return
246
+ }
247
+
248
+ if * flag3 != "test3" {
249
+ t .Errorf ("Test %s failed with flag3 being true" , t .Name ())
250
+ return
251
+ }
252
+
253
+ if * flag4 != "test4" {
254
+ t .Errorf ("Test %s failed with flag3 being true" , t .Name ())
255
+ return
256
+ }
257
+
258
+ if * flag5 != true {
259
+ t .Errorf ("Test %s failed with flag3 being true" , t .Name ())
260
+ return
261
+ }
262
+ }
263
+
264
+ func TestShortFlagEqualChar (t * testing.T ) {
265
+ testArgs := []string {"progname" , "-a=test1" , "-b=2" , "-c" , "test3" }
266
+
267
+ p := NewParser ("" , "description" )
268
+ flag1 := p .String ("a" , "flag1" , nil )
269
+ flag2 := p .Int ("b" , "flag2" , nil )
270
+ flag3 := p .String ("c" , "flag3" , nil )
271
+
272
+ err := p .Parse (testArgs )
273
+ if err != nil {
274
+ t .Errorf ("Test %s failed with error: %s" , t .Name (), err .Error ())
275
+ return
276
+ }
277
+
278
+ if flag1 == nil {
279
+ t .Errorf ("Test %s failed with flag1 being nil pointer" , t .Name ())
280
+ return
281
+ }
282
+
283
+ if flag2 == nil {
284
+ t .Errorf ("Test %s failed with flag2 being nil pointer" , t .Name ())
285
+ return
286
+ }
287
+
288
+ if flag3 == nil {
289
+ t .Errorf ("Test %s failed with flag3 being nil pointer" , t .Name ())
290
+ return
291
+ }
292
+
293
+ if * flag1 != "test1" {
294
+ t .Errorf ("Test %s failed with flag1 being false" , t .Name ())
295
+ return
296
+ }
297
+
298
+ if * flag2 != 2 {
299
+ t .Errorf ("Test %s failed with flag2 being true" , t .Name ())
300
+ return
301
+ }
302
+
303
+ if * flag3 != "test3" {
304
+ t .Errorf ("Test %s failed with flag3 being true" , t .Name ())
305
+ return
306
+ }
307
+ }
308
+
197
309
func TestFlagMultiShorthandWithParam1 (t * testing.T ) {
198
310
testArgs := []string {"progname" , "-ab" , "10" , "-c" , "-de" , "11" , "--ee" , "12" }
199
311
@@ -744,6 +856,54 @@ func TestIntFailSimple1(t *testing.T) {
744
856
}
745
857
}
746
858
859
+ func TestEqualIntFailSimple1 (t * testing.T ) {
860
+ testArgs := []string {"progname" , "--flag-arg1=string" }
861
+
862
+ p := NewParser ("" , "description" )
863
+ i1 := p .Int ("f" , "flag-arg1" , nil )
864
+
865
+ err := p .Parse (testArgs )
866
+ errStr := "[-f|--flag-arg1] bad integer value [string]"
867
+ if err == nil || err .Error () != errStr {
868
+ t .Errorf ("Test %s expected [%s], got [%+v]" , t .Name (), errStr , err )
869
+ return
870
+ }
871
+
872
+ if i1 == nil {
873
+ t .Errorf ("Test %s failed with flag1 being nil pointer" , t .Name ())
874
+ return
875
+ }
876
+
877
+ if * i1 != 0 {
878
+ t .Errorf ("Test %s failed. Want: [0], got: [%d]" , t .Name (), * i1 )
879
+ return
880
+ }
881
+ }
882
+
883
+ func TestEqualNoValFailSimple (t * testing.T ) {
884
+ testArgs := []string {"progname" , "--flag-arg1=" }
885
+
886
+ p := NewParser ("" , "description" )
887
+ i1 := p .Int ("f" , "flag-arg1" , nil )
888
+
889
+ err := p .Parse (testArgs )
890
+ errStr := "not enough arguments for -f|--flag-arg1"
891
+ if err == nil || err .Error () != errStr {
892
+ t .Errorf ("Test %s expected [%s], got [%+v]" , t .Name (), errStr , err )
893
+ return
894
+ }
895
+
896
+ if i1 == nil {
897
+ t .Errorf ("Test %s failed with flag1 being nil pointer" , t .Name ())
898
+ return
899
+ }
900
+
901
+ if * i1 != 0 {
902
+ t .Errorf ("Test %s failed. Want: [0], got: [%d]" , t .Name (), * i1 )
903
+ return
904
+ }
905
+ }
906
+
747
907
func TestFileAddArgumentFail (t * testing.T ) {
748
908
type testCase struct {
749
909
testName , shortArg , longArg , failureMessage string
0 commit comments