@@ -103,7 +103,8 @@ impl Step for CrateBootstrap {
103103 path,
104104 bootstrap_host,
105105 ) ) ;
106- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, bootstrap_host, builder) ;
106+ let crate_name = path. rsplit_once ( '/' ) . unwrap ( ) . 1 ;
107+ run_cargo_test ( cargo, & [ ] , & [ ] , crate_name, compiler, bootstrap_host, builder) ;
107108 }
108109}
109110
@@ -152,7 +153,11 @@ You can skip linkcheck with --exclude src/tools/linkchecker"
152153 SourceType :: InTree ,
153154 & [ ] ,
154155 ) ;
155- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, bootstrap_host, builder) ;
156+ run_cargo_test ( cargo, & [ ] , & [ ] , "linkchecker" , compiler, bootstrap_host, builder) ;
157+
158+ if builder. doc_tests == DocTests :: No {
159+ return ;
160+ }
156161
157162 // Build all the default documentation.
158163 builder. default_doc ( & [ ] ) ;
@@ -307,7 +312,7 @@ impl Step for Cargo {
307312 cargo. env ( "CARGO_TEST_DISABLE_NIGHTLY" , "1" ) ;
308313 cargo. env ( "PATH" , & path_for_cargo ( builder, compiler) ) ;
309314
310- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, self . host , builder) ;
315+ run_cargo_test ( cargo, & [ ] , & [ ] , "cargo" , compiler, self . host , builder) ;
311316 }
312317}
313318
@@ -364,7 +369,7 @@ impl Step for RustAnalyzer {
364369 cargo. env ( "SKIP_SLOW_TESTS" , "1" ) ;
365370
366371 cargo. add_rustc_lib_path ( builder, compiler) ;
367- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, host, builder) ;
372+ run_cargo_test ( cargo, & [ ] , & [ ] , "rust-analyzer" , compiler, host, builder) ;
368373 }
369374}
370375
@@ -413,7 +418,7 @@ impl Step for Rustfmt {
413418
414419 cargo. add_rustc_lib_path ( builder, compiler) ;
415420
416- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, host, builder) ;
421+ run_cargo_test ( cargo, & [ ] , & [ ] , "rustfmt" , compiler, host, builder) ;
417422 }
418423}
419424
@@ -461,7 +466,7 @@ impl Step for RustDemangler {
461466 cargo. env ( "RUST_DEMANGLER_DRIVER_PATH" , rust_demangler) ;
462467 cargo. add_rustc_lib_path ( builder, compiler) ;
463468
464- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, host, builder) ;
469+ run_cargo_test ( cargo, & [ ] , & [ ] , "rust-demangler" , compiler, host, builder) ;
465470 }
466471}
467472
@@ -598,7 +603,7 @@ impl Step for Miri {
598603
599604 // This can NOT be `run_cargo_test` since the Miri test runner
600605 // does not understand the flags added by `add_flags_and_try_run_test`.
601- let mut cargo = prepare_cargo_test ( cargo, & [ ] , & [ ] , compiler, target, builder) ;
606+ let mut cargo = prepare_cargo_test ( cargo, & [ ] , & [ ] , "miri" , compiler, target, builder) ;
602607 {
603608 let _time = util:: timeit ( & builder) ;
604609 builder. run ( & mut cargo) ;
@@ -675,7 +680,7 @@ impl Step for CompiletestTest {
675680 & [ ] ,
676681 ) ;
677682 cargo. allow_features ( "test" ) ;
678- run_cargo_test ( cargo, & [ ] , & [ ] , compiler, host, builder) ;
683+ run_cargo_test ( cargo, & [ ] , & [ ] , "compiletest" , compiler, host, builder) ;
679684 }
680685}
681686
@@ -718,17 +723,13 @@ impl Step for Clippy {
718723 & [ ] ,
719724 ) ;
720725
721- if !builder. fail_fast {
722- cargo. arg ( "--no-fail-fast" ) ;
723- }
724-
725726 cargo. env ( "RUSTC_TEST_SUITE" , builder. rustc ( compiler) ) ;
726727 cargo. env ( "RUSTC_LIB_PATH" , builder. rustc_libdir ( compiler) ) ;
727728 let host_libs = builder. stage_out ( compiler, Mode :: ToolRustc ) . join ( builder. cargo_dir ( ) ) ;
728729 cargo. env ( "HOST_LIBS" , host_libs) ;
729730
730731 cargo. add_rustc_lib_path ( builder, compiler) ;
731- let mut cargo = prepare_cargo_test ( cargo, & [ ] , & [ ] , compiler, host, builder) ;
732+ let mut cargo = prepare_cargo_test ( cargo, & [ ] , & [ ] , "clippy" , compiler, host, builder) ;
732733
733734 if builder. try_run ( & mut cargo) {
734735 // The tests succeeded; nothing to do.
@@ -2037,11 +2038,13 @@ fn run_cargo_test(
20372038 cargo : impl Into < Command > ,
20382039 libtest_args : & [ & str ] ,
20392040 crates : & [ Interned < String > ] ,
2041+ primary_crate : & str ,
20402042 compiler : Compiler ,
20412043 target : TargetSelection ,
20422044 builder : & Builder < ' _ > ,
20432045) -> bool {
2044- let mut cargo = prepare_cargo_test ( cargo, libtest_args, crates, compiler, target, builder) ;
2046+ let mut cargo =
2047+ prepare_cargo_test ( cargo, libtest_args, crates, primary_crate, compiler, target, builder) ;
20452048 let _time = util:: timeit ( & builder) ;
20462049 add_flags_and_try_run_tests ( builder, & mut cargo)
20472050}
@@ -2051,6 +2054,7 @@ fn prepare_cargo_test(
20512054 cargo : impl Into < Command > ,
20522055 libtest_args : & [ & str ] ,
20532056 crates : & [ Interned < String > ] ,
2057+ primary_crate : & str ,
20542058 compiler : Compiler ,
20552059 target : TargetSelection ,
20562060 builder : & Builder < ' _ > ,
@@ -2068,7 +2072,14 @@ fn prepare_cargo_test(
20682072 cargo. arg ( "--doc" ) ;
20692073 }
20702074 DocTests :: No => {
2071- cargo. args ( & [ "--lib" , "--bins" , "--examples" , "--tests" , "--benches" ] ) ;
2075+ let krate = & builder
2076+ . crates
2077+ . get ( & INTERNER . intern_str ( primary_crate) )
2078+ . unwrap_or_else ( || panic ! ( "missing crate {primary_crate}" ) ) ;
2079+ if krate. has_lib {
2080+ cargo. arg ( "--lib" ) ;
2081+ }
2082+ cargo. args ( & [ "--bins" , "--examples" , "--tests" , "--benches" ] ) ;
20722083 }
20732084 DocTests :: Yes => { }
20742085 }
@@ -2181,7 +2192,7 @@ impl Step for Crate {
21812192 & compiler. host,
21822193 target
21832194 ) ) ;
2184- run_cargo_test ( cargo, & [ ] , & self . crates , compiler, target, builder) ;
2195+ run_cargo_test ( cargo, & [ ] , & self . crates , & self . crates [ 0 ] , compiler, target, builder) ;
21852196 }
21862197}
21872198
@@ -2280,6 +2291,7 @@ impl Step for CrateRustdoc {
22802291 cargo,
22812292 & [ ] ,
22822293 & [ INTERNER . intern_str ( "rustdoc:0.0.0" ) ] ,
2294+ "rustdoc" ,
22832295 compiler,
22842296 target,
22852297 builder,
@@ -2346,6 +2358,7 @@ impl Step for CrateRustdocJsonTypes {
23462358 cargo,
23472359 libtest_args,
23482360 & [ INTERNER . intern_str ( "rustdoc-json-types" ) ] ,
2361+ "rustdoc-json-types" ,
23492362 compiler,
23502363 target,
23512364 builder,
@@ -2505,7 +2518,7 @@ impl Step for Bootstrap {
25052518 }
25062519 // rustbuild tests are racy on directory creation so just run them one at a time.
25072520 // Since there's not many this shouldn't be a problem.
2508- run_cargo_test ( cmd, & [ "--test-threads=1" ] , & [ ] , compiler, host, builder) ;
2521+ run_cargo_test ( cmd, & [ "--test-threads=1" ] , & [ ] , "bootstrap" , compiler, host, builder) ;
25092522 }
25102523
25112524 fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
@@ -2618,7 +2631,7 @@ impl Step for RustInstaller {
26182631 SourceType :: InTree ,
26192632 & [ ] ,
26202633 ) ;
2621- try_run ( builder , & mut cargo . into ( ) ) ;
2634+ run_cargo_test ( cargo , & [ ] , & [ ] , "installer" , compiler , bootstrap_host , builder ) ;
26222635
26232636 // We currently don't support running the test.sh script outside linux(?) environments.
26242637 // Eventually this should likely migrate to #[test]s in rust-installer proper rather than a
0 commit comments