about summary refs log tree commit diff
diff options
context:
space:
mode:
authorQuietMisdreavus <grey@quietmisdreavus.net>2018-07-09 19:11:06 -0500
committerQuietMisdreavus <grey@quietmisdreavus.net>2018-07-20 10:13:38 -0500
commit41e7ac16c48381321ab7af2a7a89ef0914c98470 (patch)
treeab6ede7472864bf120b9271d0998732d022db840
parent33654195a101ae78c9601355bc310e45a87f5e03 (diff)
downloadrust-41e7ac16c48381321ab7af2a7a89ef0914c98470.tar.gz
rust-41e7ac16c48381321ab7af2a7a89ef0914c98470.zip
report doctest compile failures correctly
-rw-r--r--src/librustdoc/test.rs38
-rw-r--r--src/test/rustdoc-ui/failed-doctest-output.rs5
-rw-r--r--src/test/rustdoc-ui/failed-doctest-output.stdout17
3 files changed, 38 insertions, 22 deletions
diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs
index c1beb453acc..c7d2e52e620 100644
--- a/src/librustdoc/test.rs
+++ b/src/librustdoc/test.rs
@@ -260,7 +260,7 @@ fn run_test(test: &str, cratename: &str, filename: &FileName, line: usize,
     let old = io::set_panic(Some(box Sink(data.clone())));
     let _bomb = Bomb(data.clone(), old.unwrap_or(box io::stdout()));
 
-    let (libdir, outdir) = driver::spawn_thread_pool(sessopts, |sessopts| {
+    let (libdir, outdir, compile_result) = driver::spawn_thread_pool(sessopts, |sessopts| {
         let codemap = Lrc::new(CodeMap::new_doctest(
             sessopts.file_path_mapping(), filename.clone(), line as isize - line_offset as isize
         ));
@@ -314,28 +314,28 @@ fn run_test(test: &str, cratename: &str, filename: &FileName, line: usize,
             Err(_) | Ok(Err(CompileIncomplete::Errored(_))) => Err(())
         };
 
-        match (compile_result, compile_fail) {
-            (Ok(()), true) => {
-                panic!("test compiled while it wasn't supposed to")
-            }
-            (Ok(()), false) => {}
-            (Err(()), true) => {
-                if error_codes.len() > 0 {
-                    let out = String::from_utf8(data.lock().unwrap().to_vec()).unwrap();
-                    error_codes.retain(|err| !out.contains(err));
-                }
-            }
-            (Err(()), false) => {
-                panic!("couldn't compile the test")
+        (libdir, outdir, compile_result)
+    });
+
+    match (compile_result, compile_fail) {
+        (Ok(()), true) => {
+            panic!("test compiled while it wasn't supposed to")
+        }
+        (Ok(()), false) => {}
+        (Err(()), true) => {
+            if error_codes.len() > 0 {
+                let out = String::from_utf8(data.lock().unwrap().to_vec()).unwrap();
+                error_codes.retain(|err| !out.contains(err));
             }
         }
-
-        if error_codes.len() > 0 {
-            panic!("Some expected error codes were not found: {:?}", error_codes);
+        (Err(()), false) => {
+            panic!("couldn't compile the test")
         }
+    }
 
-        (libdir, outdir)
-    });
+    if error_codes.len() > 0 {
+        panic!("Some expected error codes were not found: {:?}", error_codes);
+    }
 
     if no_run { return }
 
diff --git a/src/test/rustdoc-ui/failed-doctest-output.rs b/src/test/rustdoc-ui/failed-doctest-output.rs
index 587a5def2dd..21d3d94714a 100644
--- a/src/test/rustdoc-ui/failed-doctest-output.rs
+++ b/src/test/rustdoc-ui/failed-doctest-output.rs
@@ -17,3 +17,8 @@
 /// panic!("oh no");
 /// ```
 pub struct SomeStruct;
+
+/// ```
+/// no
+/// ```
+pub struct OtherStruct;
diff --git a/src/test/rustdoc-ui/failed-doctest-output.stdout b/src/test/rustdoc-ui/failed-doctest-output.stdout
index 78cc0370d31..08522d80225 100644
--- a/src/test/rustdoc-ui/failed-doctest-output.stdout
+++ b/src/test/rustdoc-ui/failed-doctest-output.stdout
@@ -1,9 +1,20 @@
 
-running 1 test
+running 2 tests
+test src/test/rustdoc-ui/failed-doctest-output.rs - OtherStruct (line 21) ... FAILED
 test src/test/rustdoc-ui/failed-doctest-output.rs - SomeStruct (line 16) ... FAILED
 
 failures:
 
+---- src/test/rustdoc-ui/failed-doctest-output.rs - OtherStruct (line 21) stdout ----
+error[E0425]: cannot find value `no` in this scope
+ --> src/test/rustdoc-ui/failed-doctest-output.rs:22:1
+  |
+3 | no
+  | ^^ not found in this scope
+
+thread 'src/test/rustdoc-ui/failed-doctest-output.rs - OtherStruct (line 21)' panicked at 'couldn't compile the test', librustdoc/test.rs:332:13
+note: Run with `RUST_BACKTRACE=1` for a backtrace.
+
 ---- src/test/rustdoc-ui/failed-doctest-output.rs - SomeStruct (line 16) stdout ----
 thread 'src/test/rustdoc-ui/failed-doctest-output.rs - SomeStruct (line 16)' panicked at 'test executable failed:
 
@@ -11,11 +22,11 @@ thread 'main' panicked at 'oh no', src/test/rustdoc-ui/failed-doctest-output.rs:
 note: Run with `RUST_BACKTRACE=1` for a backtrace.
 
 ', librustdoc/test.rs:367:17
-note: Run with `RUST_BACKTRACE=1` for a backtrace.
 
 
 failures:
+    src/test/rustdoc-ui/failed-doctest-output.rs - OtherStruct (line 21)
     src/test/rustdoc-ui/failed-doctest-output.rs - SomeStruct (line 16)
 
-test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out
+test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out