@@ -219,6 +219,19 @@ fn set_true_with_required_if_eq() {
219219    assert_eq ! ( matches. get_flag( "mammal" ) ,  true ) ; 
220220} 
221221
222+ #[ test]  
223+ #[ should_panic = "Argument `mammal`'s selected action SetTrue contradicts `takes_value`" ]  
224+ fn  set_true_with_incompatible_num_args ( )  { 
225+     Command :: new ( "test" ) 
226+         . arg ( 
227+             Arg :: new ( "mammal" ) 
228+                 . long ( "mammal" ) 
229+                 . action ( ArgAction :: SetTrue ) 
230+                 . num_args ( 1 ..) , 
231+         ) 
232+         . build ( ) ; 
233+ } 
234+ 
222235#[ test]  
223236fn  set_false ( )  { 
224237    let  cmd = Command :: new ( "test" ) . arg ( 
@@ -333,6 +346,19 @@ fn set_false_with_default_value_if_value() {
333346    assert_eq ! ( matches. get_flag( "mammal" ) ,  false ) ; 
334347} 
335348
349+ #[ test]  
350+ #[ should_panic = "Argument `mammal`'s selected action SetFalse contradicts `takes_value`" ]  
351+ fn  set_false_with_incompatible_num_args ( )  { 
352+     Command :: new ( "test" ) 
353+         . arg ( 
354+             Arg :: new ( "mammal" ) 
355+                 . long ( "mammal" ) 
356+                 . action ( ArgAction :: SetFalse ) 
357+                 . num_args ( 1 ..) , 
358+         ) 
359+         . build ( ) ; 
360+ } 
361+ 
336362#[ test]  
337363fn  count ( )  { 
338364    let  cmd = Command :: new ( "test" ) . arg ( Arg :: new ( "mammal" ) . long ( "mammal" ) . action ( ArgAction :: Count ) ) ; 
@@ -442,3 +468,69 @@ fn count_with_default_value_if_value() {
442468    assert_eq ! ( * matches. get_one:: <u8 >( "dog" ) . unwrap( ) ,  0 ) ; 
443469    assert_eq ! ( * matches. get_one:: <u8 >( "mammal" ) . unwrap( ) ,  1 ) ; 
444470} 
471+ 
472+ #[ test]  
473+ #[ should_panic = "Argument `mammal`'s selected action Count contradicts `takes_value`" ]  
474+ fn  count_with_incompatible_num_args ( )  { 
475+     Command :: new ( "test" ) 
476+         . arg ( 
477+             Arg :: new ( "mammal" ) 
478+                 . long ( "mammal" ) 
479+                 . action ( ArgAction :: Count ) 
480+                 . num_args ( 1 ..) , 
481+         ) 
482+         . build ( ) ; 
483+ } 
484+ 
485+ #[ test]  
486+ #[ should_panic = "Argument `mammal`'s selected action Help contradicts `takes_value`" ]  
487+ fn  help_with_incompatible_num_args ( )  { 
488+     Command :: new ( "test" ) 
489+         . arg ( 
490+             Arg :: new ( "mammal" ) 
491+                 . long ( "mammal" ) 
492+                 . action ( ArgAction :: Help ) 
493+                 . num_args ( 1 ..) , 
494+         ) 
495+         . build ( ) ; 
496+ } 
497+ 
498+ #[ test]  
499+ #[ should_panic = "Argument `mammal`'s selected action HelpShort contradicts `takes_value`" ]  
500+ fn  help_short_with_incompatible_num_args ( )  { 
501+     Command :: new ( "test" ) 
502+         . arg ( 
503+             Arg :: new ( "mammal" ) 
504+                 . long ( "mammal" ) 
505+                 . action ( ArgAction :: HelpShort ) 
506+                 . num_args ( 1 ..) , 
507+         ) 
508+         . build ( ) ; 
509+ } 
510+ 
511+ #[ test]  
512+ #[ should_panic = "Argument `mammal`'s selected action HelpLong contradicts `takes_value`" ]  
513+ fn  help_long_with_incompatible_num_args ( )  { 
514+     Command :: new ( "test" ) 
515+         . arg ( 
516+             Arg :: new ( "mammal" ) 
517+                 . long ( "mammal" ) 
518+                 . action ( ArgAction :: HelpLong ) 
519+                 . num_args ( 1 ..) , 
520+         ) 
521+         . build ( ) ; 
522+ } 
523+ 
524+ #[ test]  
525+ #[ should_panic = "Argument `mammal`'s selected action Version contradicts `takes_value`" ]  
526+ fn  version_with_incompatible_num_args ( )  { 
527+     Command :: new ( "test" ) 
528+         . version ( "1.0.0" ) 
529+         . arg ( 
530+             Arg :: new ( "mammal" ) 
531+                 . long ( "mammal" ) 
532+                 . action ( ArgAction :: Version ) 
533+                 . num_args ( 1 ..) , 
534+         ) 
535+         . build ( ) ; 
536+ } 
0 commit comments