@@ -574,22 +574,22 @@ impl Step for RustdocTheme {
574574}
575575
576576#[ derive( Debug , Copy , Clone , Hash , PartialEq , Eq ) ]
577- pub struct RustdocJS {
577+ pub struct RustdocJSStd {
578578 pub host : Interned < String > ,
579579 pub target : Interned < String > ,
580580}
581581
582- impl Step for RustdocJS {
582+ impl Step for RustdocJSStd {
583583 type Output = ( ) ;
584584 const DEFAULT : bool = true ;
585585 const ONLY_HOSTS : bool = true ;
586586
587587 fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
588- run. path ( "src/test/rustdoc-js" )
588+ run. path ( "src/test/rustdoc-js-std " )
589589 }
590590
591591 fn make_run ( run : RunConfig < ' _ > ) {
592- run. builder . ensure ( RustdocJS {
592+ run. builder . ensure ( RustdocJSStd {
593593 host : run. host ,
594594 target : run. target ,
595595 } ) ;
@@ -598,12 +598,55 @@ impl Step for RustdocJS {
598598 fn run ( self , builder : & Builder < ' _ > ) {
599599 if let Some ( ref nodejs) = builder. config . nodejs {
600600 let mut command = Command :: new ( nodejs) ;
601- command. args ( & [ "src/tools/rustdoc-js/tester.js" , & * self . host ] ) ;
601+ command. args ( & [ "src/tools/rustdoc-js-std /tester.js" , & * self . host ] ) ;
602602 builder. ensure ( crate :: doc:: Std {
603603 target : self . target ,
604604 stage : builder. top_stage ,
605605 } ) ;
606606 builder. run ( & mut command) ;
607+ } else {
608+ builder. info (
609+ "No nodejs found, skipping \" src/test/rustdoc-js-std\" tests"
610+ ) ;
611+ }
612+ }
613+ }
614+
615+ #[ derive( Debug , Copy , Clone , Hash , PartialEq , Eq ) ]
616+ pub struct RustdocJSNotStd {
617+ pub host : Interned < String > ,
618+ pub target : Interned < String > ,
619+ pub compiler : Compiler ,
620+ }
621+
622+ impl Step for RustdocJSNotStd {
623+ type Output = ( ) ;
624+ const DEFAULT : bool = true ;
625+ const ONLY_HOSTS : bool = true ;
626+
627+ fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
628+ run. path ( "src/test/rustdoc-js" )
629+ }
630+
631+ fn make_run ( run : RunConfig < ' _ > ) {
632+ let compiler = run. builder . compiler ( run. builder . top_stage , run. host ) ;
633+ run. builder . ensure ( RustdocJSNotStd {
634+ host : run. host ,
635+ target : run. target ,
636+ compiler,
637+ } ) ;
638+ }
639+
640+ fn run ( self , builder : & Builder < ' _ > ) {
641+ if builder. config . nodejs . is_some ( ) {
642+ builder. ensure ( Compiletest {
643+ compiler : self . compiler ,
644+ target : self . target ,
645+ mode : "js-doc-test" ,
646+ suite : "rustdoc-js" ,
647+ path : None ,
648+ compare_mode : None ,
649+ } ) ;
607650 } else {
608651 builder. info (
609652 "No nodejs found, skipping \" src/test/rustdoc-js\" tests"
@@ -990,12 +1033,13 @@ impl Step for Compiletest {
9901033 . arg ( builder. sysroot_libdir ( compiler, target) ) ;
9911034 cmd. arg ( "--rustc-path" ) . arg ( builder. rustc ( compiler) ) ;
9921035
993- let is_rustdoc_ui = suite. ends_with ( "rustdoc-ui" ) ;
1036+ let is_rustdoc = suite. ends_with ( "rustdoc-ui" ) || suite . ends_with ( "rustdoc-js ") ;
9941037
9951038 // Avoid depending on rustdoc when we don't need it.
9961039 if mode == "rustdoc"
9971040 || ( mode == "run-make" && suite. ends_with ( "fulldeps" ) )
998- || ( mode == "ui" && is_rustdoc_ui)
1041+ || ( mode == "ui" && is_rustdoc)
1042+ || mode == "js-doc-test"
9991043 {
10001044 cmd. arg ( "--rustdoc-path" )
10011045 . arg ( builder. rustdoc ( compiler. host ) ) ;
@@ -1029,12 +1073,12 @@ impl Step for Compiletest {
10291073 cmd. arg ( "--nodejs" ) . arg ( nodejs) ;
10301074 }
10311075
1032- let mut flags = if is_rustdoc_ui {
1076+ let mut flags = if is_rustdoc {
10331077 Vec :: new ( )
10341078 } else {
10351079 vec ! [ "-Crpath" . to_string( ) ]
10361080 } ;
1037- if !is_rustdoc_ui {
1081+ if !is_rustdoc {
10381082 if builder. config . rust_optimize_tests {
10391083 flags. push ( "-O" . to_string ( ) ) ;
10401084 }
0 commit comments