@@ -290,10 +290,13 @@ impl Options {
290290
291291 let options = Options {
292292 additional_cargo_args : join_slices ( & args. cargo_arg , & config. additional_cargo_args ) ,
293- additional_cargo_test_args : join_slices (
294- & args. cargo_test_args ,
295- & config. additional_cargo_test_args ,
296- ) ,
293+ additional_cargo_test_args : args
294+ . cargo_test_arg
295+ . iter ( )
296+ . chain ( & args. cargo_test_args )
297+ . chain ( & config. additional_cargo_test_args )
298+ . cloned ( )
299+ . collect ( ) ,
297300 all_features : args. all_features || config. all_features . unwrap_or ( false ) ,
298301 annotations : args. annotations . resolve ( ) ,
299302 baseline : args. baseline ,
@@ -1097,4 +1100,77 @@ mod test {
10971100 let options = Options :: new ( & args, & config) . unwrap ( ) ;
10981101 assert ! ( !options. copy_vcs) ;
10991102 }
1103+
1104+ #[ test]
1105+ fn cargo_test_arg_from_command_line ( ) {
1106+ let args = Args :: parse_from ( [ "mutants" , "--cargo-test-arg=--lib" ] ) ;
1107+ let config = Config :: default ( ) ;
1108+ let options = Options :: new ( & args, & config) . unwrap ( ) ;
1109+ assert_eq ! ( options. additional_cargo_test_args, vec![ "--lib" ] ) ;
1110+ }
1111+
1112+ #[ test]
1113+ fn cargo_test_arg_multiple_from_command_line ( ) {
1114+ let args = Args :: parse_from ( [
1115+ "mutants" ,
1116+ "--cargo-test-arg=--lib" ,
1117+ "--cargo-test-arg=--no-fail-fast" ,
1118+ ] ) ;
1119+ let config = Config :: default ( ) ;
1120+ let options = Options :: new ( & args, & config) . unwrap ( ) ;
1121+ assert_eq ! (
1122+ options. additional_cargo_test_args,
1123+ vec![ "--lib" , "--no-fail-fast" ]
1124+ ) ;
1125+ }
1126+
1127+ #[ test]
1128+ fn cargo_test_args_after_double_dash ( ) {
1129+ let args = Args :: parse_from ( [ "mutants" , "--" , "--lib" , "--no-fail-fast" ] ) ;
1130+ let config = Config :: default ( ) ;
1131+ let options = Options :: new ( & args, & config) . unwrap ( ) ;
1132+ assert_eq ! (
1133+ options. additional_cargo_test_args,
1134+ vec![ "--lib" , "--no-fail-fast" ]
1135+ ) ;
1136+ }
1137+
1138+ #[ test]
1139+ fn cargo_test_arg_and_cargo_test_args_combined ( ) {
1140+ let args = Args :: parse_from ( [ "mutants" , "--cargo-test-arg=--lib" , "--" , "--no-fail-fast" ] ) ;
1141+ let config = Config :: default ( ) ;
1142+ let options = Options :: new ( & args, & config) . unwrap ( ) ;
1143+ assert_eq ! (
1144+ options. additional_cargo_test_args,
1145+ vec![ "--lib" , "--no-fail-fast" ]
1146+ ) ;
1147+ }
1148+
1149+ #[ test]
1150+ fn cargo_test_arg_and_config_combined ( ) {
1151+ let args = Args :: parse_from ( [ "mutants" , "--cargo-test-arg=--lib" ] ) ;
1152+ let config = Config :: from_str ( indoc ! { r#"
1153+ additional_cargo_test_args = ["--no-fail-fast"]
1154+ "# } )
1155+ . unwrap ( ) ;
1156+ let options = Options :: new ( & args, & config) . unwrap ( ) ;
1157+ assert_eq ! (
1158+ options. additional_cargo_test_args,
1159+ vec![ "--lib" , "--no-fail-fast" ]
1160+ ) ;
1161+ }
1162+
1163+ #[ test]
1164+ fn cargo_test_arg_cargo_test_args_and_config_combined ( ) {
1165+ let args = Args :: parse_from ( [ "mutants" , "--cargo-test-arg=--all-targets" , "--" , "--lib" ] ) ;
1166+ let config = Config :: from_str ( indoc ! { r#"
1167+ additional_cargo_test_args = ["--no-fail-fast"]
1168+ "# } )
1169+ . unwrap ( ) ;
1170+ let options = Options :: new ( & args, & config) . unwrap ( ) ;
1171+ assert_eq ! (
1172+ options. additional_cargo_test_args,
1173+ vec![ "--all-targets" , "--lib" , "--no-fail-fast" ]
1174+ ) ;
1175+ }
11001176}
0 commit comments