about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2019-02-24 01:04:07 +0100
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2019-02-25 17:46:06 +0100
commitbe23cd9a2d32295240e265aa2ed38bace71aca65 (patch)
tree3d6c330b06f9885405c261087c1fe7d269b031f5 /src/bootstrap
parentaa3ca321e92c541dce363634c9cea7cf23689a5e (diff)
downloadrust-be23cd9a2d32295240e265aa2ed38bace71aca65.tar.gz
rust-be23cd9a2d32295240e265aa2ed38bace71aca65.zip
Move documentation build into bootstrap
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/test.rs46
1 files changed, 41 insertions, 5 deletions
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index c724d75c2dc..83066468cd4 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -4,7 +4,7 @@
 //! our CI.
 
 use std::env;
-use std::ffi::OsString;
+use std::ffi::{OsStr, OsString};
 use std::fmt;
 use std::fs;
 use std::iter;
@@ -639,14 +639,50 @@ impl Step for RustdocJSNotStd {
 
     fn run(self, builder: &Builder) {
         if let Some(ref nodejs) = builder.config.nodejs {
-            let mut command = Command::new(nodejs);
-            command.args(&["src/tools/rustdoc-js/tester.js",
-                           &*self.host,
-                           builder.top_stage.to_string().as_str()]);
             builder.ensure(crate::doc::Std {
                 target: self.target,
                 stage: builder.top_stage,
             });
+
+            let mut tests_to_run = Vec::new();
+            let out = Path::new("build").join(&*self.host)
+                                        .join(&format!("stage{}",
+                                                       builder.top_stage.to_string().as_str()))
+                                        .join("tests")
+                                        .join("rustdoc-js");
+
+            if let Ok(it) = fs::read_dir("src/test/rustdoc-js/") {
+                for entry in it {
+                    if let Ok(entry) = entry {
+                        let path = entry.path();
+                        if path.extension() != Some(&OsStr::new("rs")) || !path.is_file() {
+                            continue
+                        }
+                        let path_clone = path.clone();
+                        let file_stem = path_clone.file_stem().expect("cannot get file stem");
+                        let out = out.join(file_stem);
+                        let mut cmd = builder.rustdoc_cmd(self.host);
+                        cmd.arg("-o");
+                        cmd.arg(out);
+                        cmd.arg(path);
+                        if if builder.config.verbose_tests {
+                            try_run(builder, &mut cmd)
+                        } else {
+                            try_run_quiet(builder, &mut cmd)
+                        } {
+                            tests_to_run.push(file_stem.to_os_string());
+                        }
+                    }
+                }
+            }
+            assert!(!tests_to_run.is_empty(), "no rustdoc-js test generated...");
+
+            tests_to_run.insert(0, "src/tools/rustdoc-js/tester.js".into());
+            tests_to_run.insert(1, out.into());
+
+            let mut command = Command::new(nodejs);
+            command.args(&tests_to_run);
+
             builder.run(&mut command);
         } else {
             builder.info(