2021-12-13 15:28:42 +00:00
#[ cfg(debug_assertions) ]
2022-02-12 03:48:29 +00:00
use clap ::{ Arg , Command } ;
2021-10-26 22:22:35 +00:00
#[ test ]
#[ cfg(debug_assertions) ]
2022-01-04 22:10:26 +00:00
#[ should_panic = " `f` is not a name of an argument or a group. " ]
2021-10-26 22:22:35 +00:00
fn arg_matches_if_present_wrong_arg ( ) {
2022-02-12 03:48:29 +00:00
let m = Command ::new ( " test " )
2021-10-26 22:22:35 +00:00
. arg ( Arg ::new ( " flag " ) . short ( 'f' ) )
2021-12-27 18:56:12 +00:00
. try_get_matches_from ( & [ " test " , " -f " ] )
. unwrap ( ) ;
2021-10-26 22:22:35 +00:00
assert! ( m . is_present ( " flag " ) ) ;
m . is_present ( " f " ) ;
}
#[ test ]
#[ cfg(debug_assertions) ]
2022-05-24 15:16:50 +00:00
#[ should_panic = " Mismatch between definition and access of `o`. Unknown argument or group id. Make sure you are using the argument id and not the short or long flags " ]
2021-10-26 22:22:35 +00:00
fn arg_matches_value_of_wrong_arg ( ) {
2022-02-12 03:48:29 +00:00
let m = Command ::new ( " test " )
2021-10-26 22:22:35 +00:00
. arg ( Arg ::new ( " opt " ) . short ( 'o' ) . takes_value ( true ) )
2021-12-27 18:56:12 +00:00
. try_get_matches_from ( & [ " test " , " -o " , " val " ] )
. unwrap ( ) ;
2021-10-26 22:22:35 +00:00
2022-05-24 15:16:50 +00:00
assert_eq! ( m . get_one ::< String > ( " opt " ) . map ( | v | v . as_str ( ) ) , Some ( " val " ) ) ;
m . get_one ::< String > ( " o " ) . map ( | v | v . as_str ( ) ) ;
2021-10-26 22:22:35 +00:00
}
#[ test ]
#[ cfg(debug_assertions) ]
2022-01-04 22:10:26 +00:00
#[ should_panic = " `seed` is not a name of a subcommand. " ]
2021-10-26 22:22:35 +00:00
fn arg_matches_subcommand_matches_wrong_sub ( ) {
2022-02-12 03:48:29 +00:00
let m = Command ::new ( " test " )
. subcommand ( Command ::new ( " speed " ) )
2021-12-27 18:56:12 +00:00
. try_get_matches_from ( & [ " test " , " speed " ] )
. unwrap ( ) ;
2021-10-26 22:22:35 +00:00
assert! ( m . subcommand_matches ( " speed " ) . is_some ( ) ) ;
m . subcommand_matches ( " seed " ) ;
}