@@ -235,6 +235,35 @@ fn arg_conflicts_with_required_group() {
235235 }
236236}
237237
238+ #[ test]
239+ fn arg_conflicts_with_group_with_required_memeber ( ) {
240+ let mut cmd = Command :: new ( "group_conflict" )
241+ . arg ( arg ! ( -f --flag "some flag" ) . conflicts_with ( "gr" ) )
242+ . group ( ArgGroup :: new ( "gr" ) . arg ( "some" ) . arg ( "other" ) )
243+ . arg ( arg ! ( --some "some arg" ) . required ( true ) )
244+ . arg ( arg ! ( --other "other arg" ) ) ;
245+
246+ let result = cmd. try_get_matches_from_mut ( vec ! [ "myprog" , "--other" , "-f" ] ) ;
247+ assert ! ( result. is_err( ) ) ;
248+ let err = result. err ( ) . unwrap ( ) ;
249+ assert_eq ! ( err. kind( ) , ErrorKind :: ArgumentConflict ) ;
250+
251+ let result = cmd. try_get_matches_from_mut ( vec ! [ "myprog" , "-f" , "--some" ] ) ;
252+ assert ! ( result. is_err( ) ) ;
253+ let err = result. err ( ) . unwrap ( ) ;
254+ assert_eq ! ( err. kind( ) , ErrorKind :: ArgumentConflict ) ;
255+
256+ let result = cmd. try_get_matches_from_mut ( vec ! [ "myprog" , "--some" ] ) ;
257+ if let Err ( err) = result {
258+ panic ! ( "{}" , err) ;
259+ }
260+
261+ let result = cmd. try_get_matches_from_mut ( vec ! [ "myprog" , "--flag" ] ) ;
262+ if let Err ( err) = result {
263+ panic ! ( "{}" , err) ;
264+ }
265+ }
266+
238267#[ test]
239268fn required_group_conflicts_with_arg ( ) {
240269 let mut cmd = Command :: new ( "group_conflict" )
0 commit comments