]> git.lizzy.rs Git - rust.git/commitdiff
Don't abort rustdoc tests if `tidy` isn't installed
authorJoshua Nelson <jyn514@gmail.com>
Tue, 24 Nov 2020 01:50:02 +0000 (20:50 -0500)
committerJoshua Nelson <jyn514@gmail.com>
Sat, 12 Dec 2020 13:38:13 +0000 (08:38 -0500)
Before:

```
Check compiletest suite=rustdoc mode=rustdoc (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)

running 396 tests
..................................................2020-11-23T12:12:37.735649Z ERROR compiletest::runtest: fatal error, panic: "failed to run tidy - is it installed? - No such file or directory (os error 2)"
F................................................. 100/396
.................................................................................................... 200/396
.................................................................................................... 300/396
...............................i...............2020-11-23T12:15:00.271271Z ERROR compiletest::runtest: fatal error, panic: "failed to run tidy - is it installed? - No such file or directory (os error 2)"
F................................................
```

After:

```
Check compiletest suite=rustdoc mode=rustdoc (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)

running 4 tests
.FFF
failures:

---- [rustdoc] rustdoc/fn-pointer-arg-name.rs stdout ----

error: htmldocck failed!
status: exit code: 1
command: "/usr/bin/python" "/home/joshua/rustc/src/etc/htmldocck.py" "/home/joshua/rustc/build/x86_64-unknown-linux-gnu/test/rustdoc/fn-pointer-arg-name" "/home/joshua/rustc/src/test/rustdoc/fn-pointer-arg-name.rs"
stdout:
------------------------------------------

------------------------------------------
stderr:
------------------------------------------
4: @has check failed
`XPATH PATTERN` did not match
// @has - '//*[@class="rust fn"]' 'pub fn f(callback: fn(len: usize, foo: u32))'

Encountered 1 errors

------------------------------------------

info: generating a diff against nightly rustdoc
failed to run tidy - is it installed? - Permission denied (os error 13)
failed to run tidy - is it installed? - Permission denied (os error 13)
 # a diff without running `tidy`
```

src/tools/compiletest/src/runtest.rs

index ccef005173d92c6896c572c83281ae126328ceec..398f3e31c6ad86f1cb6be419625400b1d6f54419 100644 (file)
@@ -2394,7 +2394,8 @@ fn compare_to_default_rustdoc(&mut self, out_dir: &Path) {
 
         let proc_res = new_rustdoc.document(&compare_dir);
         if !proc_res.status.success() {
-            proc_res.fatal(Some("failed to run nightly rustdoc"), || ());
+            eprintln!("failed to run nightly rustdoc");
+            return;
         }
 
         #[rustfmt::skip]
@@ -2409,22 +2410,26 @@ fn compare_to_default_rustdoc(&mut self, out_dir: &Path) {
         ];
         let tidy_dir = |dir| {
             let tidy = |file: &_| {
-                Command::new("tidy")
-                    .args(&tidy_args)
-                    .arg(file)
-                    .spawn()
-                    .unwrap_or_else(|err| {
-                        self.fatal(&format!("failed to run tidy - is it installed? - {}", err))
-                    })
-                    .wait()
-                    .unwrap()
+                let tidy_proc = Command::new("tidy").args(&tidy_args).arg(file).spawn();
+                match tidy_proc {
+                    Ok(mut proc) => {
+                        proc.wait().unwrap();
+                        true
+                    }
+                    Err(err) => {
+                        eprintln!("failed to run tidy - is it installed? - {}", err);
+                        false
+                    }
+                }
             };
             for entry in walkdir::WalkDir::new(dir) {
                 let entry = entry.expect("failed to read file");
                 if entry.file_type().is_file()
                     && entry.path().extension().and_then(|p| p.to_str()) == Some("html".into())
                 {
-                    tidy(entry.path());
+                    if !tidy(entry.path()) {
+                        return;
+                    }
                 }
             }
         };