@@ -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 ( & [ ] ) ; 
@@ -300,7 +305,7 @@ impl Step for Cargo {
300305        ) ; 
301306
302307        // NOTE: can't use `run_cargo_test` because we need to overwrite `PATH` 
303-         let  mut  cargo = prepare_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  self . host ,  builder) ; 
308+         let  mut  cargo = prepare_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "cargo" ,   compiler,  self . host ,  builder) ; 
304309
305310        // Don't run cross-compile tests, we may not have cross-compiled libstd libs 
306311        // available. 
@@ -368,7 +373,7 @@ impl Step for RustAnalyzer {
368373        cargo. env ( "SKIP_SLOW_TESTS" ,  "1" ) ; 
369374
370375        cargo. add_rustc_lib_path ( builder,  compiler) ; 
371-         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  host,  builder) ; 
376+         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "rust-analyzer" ,   compiler,  host,  builder) ; 
372377    } 
373378} 
374379
@@ -417,7 +422,7 @@ impl Step for Rustfmt {
417422
418423        cargo. add_rustc_lib_path ( builder,  compiler) ; 
419424
420-         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  host,  builder) ; 
425+         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "rustfmt" ,   compiler,  host,  builder) ; 
421426    } 
422427} 
423428
@@ -465,7 +470,7 @@ impl Step for RustDemangler {
465470        cargo. env ( "RUST_DEMANGLER_DRIVER_PATH" ,  rust_demangler) ; 
466471        cargo. add_rustc_lib_path ( builder,  compiler) ; 
467472
468-         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  host,  builder) ; 
473+         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "rust-demangler" ,   compiler,  host,  builder) ; 
469474    } 
470475} 
471476
@@ -602,7 +607,7 @@ impl Step for Miri {
602607
603608        // This can NOT be `run_cargo_test` since the Miri test runner 
604609        // does not understand the flags added by `add_flags_and_try_run_test`. 
605-         let  mut  cargo = prepare_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  target,  builder) ; 
610+         let  mut  cargo = prepare_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "miri" ,   compiler,  target,  builder) ; 
606611        { 
607612            let  _time = util:: timeit ( & builder) ; 
608613            builder. run ( & mut  cargo) ; 
@@ -679,7 +684,7 @@ impl Step for CompiletestTest {
679684            & [ ] , 
680685        ) ; 
681686        cargo. allow_features ( "test" ) ; 
682-         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  host,  builder) ; 
687+         run_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "compiletest" ,   compiler,  host,  builder) ; 
683688    } 
684689} 
685690
@@ -722,17 +727,13 @@ impl Step for Clippy {
722727            & [ ] , 
723728        ) ; 
724729
725-         if  !builder. fail_fast  { 
726-             cargo. arg ( "--no-fail-fast" ) ; 
727-         } 
728- 
729730        cargo. env ( "RUSTC_TEST_SUITE" ,  builder. rustc ( compiler) ) ; 
730731        cargo. env ( "RUSTC_LIB_PATH" ,  builder. rustc_libdir ( compiler) ) ; 
731732        let  host_libs = builder. stage_out ( compiler,  Mode :: ToolRustc ) . join ( builder. cargo_dir ( ) ) ; 
732733        cargo. env ( "HOST_LIBS" ,  host_libs) ; 
733734
734735        cargo. add_rustc_lib_path ( builder,  compiler) ; 
735-         let  mut  cargo = prepare_cargo_test ( cargo,  & [ ] ,  & [ ] ,  compiler,  host,  builder) ; 
736+         let  mut  cargo = prepare_cargo_test ( cargo,  & [ ] ,  & [ ] ,  "clippy" ,   compiler,  host,  builder) ; 
736737
737738        if  builder. try_run ( & mut  cargo)  { 
738739            // The tests succeeded; nothing to do. 
@@ -2048,11 +2049,13 @@ fn run_cargo_test(
20482049    cargo :  impl  Into < Command > , 
20492050    libtest_args :  & [ & str ] , 
20502051    crates :  & [ Interned < String > ] , 
2052+     primary_crate :  & str , 
20512053    compiler :  Compiler , 
20522054    target :  TargetSelection , 
20532055    builder :  & Builder < ' _ > , 
20542056)  -> bool  { 
2055-     let  mut  cargo = prepare_cargo_test ( cargo,  libtest_args,  crates,  compiler,  target,  builder) ; 
2057+     let  mut  cargo =
2058+         prepare_cargo_test ( cargo,  libtest_args,  crates,  primary_crate,  compiler,  target,  builder) ; 
20562059    let  _time = util:: timeit ( & builder) ; 
20572060    add_flags_and_try_run_tests ( builder,  & mut  cargo) 
20582061} 
@@ -2062,6 +2065,7 @@ fn prepare_cargo_test(
20622065    cargo :  impl  Into < Command > , 
20632066    libtest_args :  & [ & str ] , 
20642067    crates :  & [ Interned < String > ] , 
2068+     primary_crate :  & str , 
20652069    compiler :  Compiler , 
20662070    target :  TargetSelection , 
20672071    builder :  & Builder < ' _ > , 
@@ -2079,7 +2083,14 @@ fn prepare_cargo_test(
20792083            cargo. arg ( "--doc" ) ; 
20802084        } 
20812085        DocTests :: No  => { 
2082-             cargo. args ( & [ "--lib" ,  "--bins" ,  "--examples" ,  "--tests" ,  "--benches" ] ) ; 
2086+             let  krate = & builder
2087+                 . crates 
2088+                 . get ( & INTERNER . intern_str ( primary_crate) ) 
2089+                 . unwrap_or_else ( || panic ! ( "missing crate {primary_crate}" ) ) ; 
2090+             if  krate. has_lib  { 
2091+                 cargo. arg ( "--lib" ) ; 
2092+             } 
2093+             cargo. args ( & [ "--bins" ,  "--examples" ,  "--tests" ,  "--benches" ] ) ; 
20832094        } 
20842095        DocTests :: Yes  => { } 
20852096    } 
@@ -2191,7 +2202,7 @@ impl Step for Crate {
21912202            compiler. host , 
21922203            target, 
21932204        ) ; 
2194-         run_cargo_test ( cargo,  & [ ] ,  & self . crates ,  compiler,  target,  builder) ; 
2205+         run_cargo_test ( cargo,  & [ ] ,  & self . crates ,  & self . crates [ 0 ] ,   compiler,  target,  builder) ; 
21952206    } 
21962207} 
21972208
@@ -2284,6 +2295,7 @@ impl Step for CrateRustdoc {
22842295            cargo, 
22852296            & [ ] , 
22862297            & [ INTERNER . intern_str ( "rustdoc:0.0.0" ) ] , 
2298+             "rustdoc" , 
22872299            compiler, 
22882300            target, 
22892301            builder, 
@@ -2345,6 +2357,7 @@ impl Step for CrateRustdocJsonTypes {
23452357            cargo, 
23462358            libtest_args, 
23472359            & [ INTERNER . intern_str ( "rustdoc-json-types" ) ] , 
2360+             "rustdoc-json-types" , 
23482361            compiler, 
23492362            target, 
23502363            builder, 
@@ -2504,7 +2517,7 @@ impl Step for Bootstrap {
25042517        } 
25052518        // rustbuild tests are racy on directory creation so just run them one at a time. 
25062519        // Since there's not many this shouldn't be a problem. 
2507-         run_cargo_test ( cmd,  & [ "--test-threads=1" ] ,  & [ ] ,  compiler,  host,  builder) ; 
2520+         run_cargo_test ( cmd,  & [ "--test-threads=1" ] ,  & [ ] ,  "bootstrap" ,   compiler,  host,  builder) ; 
25082521    } 
25092522
25102523    fn  should_run ( run :  ShouldRun < ' _ > )  -> ShouldRun < ' _ >  { 
@@ -2617,7 +2630,7 @@ impl Step for RustInstaller {
26172630            SourceType :: InTree , 
26182631            & [ ] , 
26192632        ) ; 
2620-         try_run ( builder ,  & mut  cargo . into ( ) ) ; 
2633+         run_cargo_test ( cargo ,  & [ ] ,   & [ ] ,   "installer" ,  compiler ,  bootstrap_host ,  builder ) ; 
26212634
26222635        // We currently don't support running the test.sh script outside linux(?) environments. 
26232636        // Eventually this should likely migrate to #[test]s in rust-installer proper rather than a 
0 commit comments