@@ -171,6 +171,7 @@ runner = "x86_64-runner"
171171 Some ( [ "cargo" . to_string( ) ] . into_iter( ) . collect( ) ) ,
172172 "setting list value"
173173 ) ;
174+ assert_eq ! ( config. jobs, Some ( 1 ) ) ;
174175 assert_eq ! (
175176 config. llvm_build_config,
176177 [ ( "foo" . to_string( ) , "bar" . to_string( ) ) ] . into_iter( ) . collect( ) ,
@@ -352,3 +353,61 @@ fn parse_rust_std_features_empty() {
352353fn parse_rust_std_features_invalid ( ) {
353354 parse ( "rust.std-features = \" backtrace\" " ) ;
354355}
356+
357+ #[ test]
358+ fn parse_jobs ( ) {
359+ assert_eq ! ( parse( "build.jobs = 1" ) . jobs, Some ( 1 ) ) ;
360+ }
361+
362+ #[ test]
363+ fn jobs_precedence ( ) {
364+ // `--jobs` should take precedence over using `--set build.jobs`.
365+
366+ let config = Config :: parse_inner (
367+ Flags :: parse ( & [
368+ "check" . to_owned ( ) ,
369+ "--config=/does/not/exist" . to_owned ( ) ,
370+ "--jobs=67890" . to_owned ( ) ,
371+ "--set=build.jobs=12345" . to_owned ( ) ,
372+ ] ) ,
373+ |& _| toml:: from_str ( "" ) ,
374+ ) ;
375+ assert_eq ! ( config. jobs, Some ( 67890 ) ) ;
376+
377+ // `--set build.jobs` should take precedence over `config.toml`.
378+ let config = Config :: parse_inner (
379+ Flags :: parse ( & [
380+ "check" . to_owned ( ) ,
381+ "--config=/does/not/exist" . to_owned ( ) ,
382+ "--set=build.jobs=12345" . to_owned ( ) ,
383+ ] ) ,
384+ |& _| {
385+ toml:: from_str (
386+ r#"
387+ [build]
388+ jobs = 67890
389+ "# ,
390+ )
391+ } ,
392+ ) ;
393+ assert_eq ! ( config. jobs, Some ( 67890 ) ) ;
394+
395+ // `--jobs` > `--set build.jobs` > `config.toml`
396+ let config = Config :: parse_inner (
397+ Flags :: parse ( & [
398+ "check" . to_owned ( ) ,
399+ "--jobs=123" . to_owned ( ) ,
400+ "--config=/does/not/exist" . to_owned ( ) ,
401+ "--set=build.jobs=456" . to_owned ( ) ,
402+ ] ) ,
403+ |& _| {
404+ toml:: from_str (
405+ r#"
406+ [build]
407+ jobs = 789
408+ "# ,
409+ )
410+ } ,
411+ ) ;
412+ assert_eq ! ( config. jobs, Some ( 123 ) ) ;
413+ }
0 commit comments