about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2024-07-08 15:01:17 +0200
committerGuillaume Gomez <guillaume.gomez@huawei.com>2024-08-13 20:14:56 +0200
commit4b1db071d13a2c27ac1fb33158bcab93b56fb761 (patch)
treeb62672aac6d7330bf9d14df18e63ad05137a47cd
parent72aeffa78cccc8f368d6e8ad8027894e0b152f23 (diff)
downloadrust-4b1db071d13a2c27ac1fb33158bcab93b56fb761.tar.gz
rust-4b1db071d13a2c27ac1fb33158bcab93b56fb761.zip
Don't special-case if there is only one merged doctest
-rw-r--r--src/librustdoc/doctest.rs52
-rw-r--r--tests/rustdoc-ui/doctest/failed-doctest-should-panic.stdout4
-rw-r--r--tests/rustdoc-ui/doctest/wrong-ast-2024.stdout11
-rw-r--r--tests/rustdoc-ui/doctest/wrong-ast.rs1
-rw-r--r--tests/rustdoc-ui/doctest/wrong-ast.stdout18
-rw-r--r--tests/rustdoc-ui/run-as-standalone.rs17
-rw-r--r--tests/rustdoc-ui/run-as-standalone.stdout7
7 files changed, 43 insertions, 67 deletions
diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs
index 812e1298655..24e5e876112 100644
--- a/src/librustdoc/doctest.rs
+++ b/src/librustdoc/doctest.rs
@@ -267,39 +267,35 @@ pub(crate) fn run_tests(
         if doctests.is_empty() {
             continue;
         }
-        // If there is only one mergeable doctest, the cost to run it would be higher than just
-        // running it alonside standalone doctests.
-        if doctests.len() > 1 {
-            doctests.sort_by(|(_, a), (_, b)| a.name.cmp(&b.name));
+        doctests.sort_by(|(_, a), (_, b)| a.name.cmp(&b.name));
 
-            let mut tests_runner = runner::DocTestRunner::new();
+        let mut tests_runner = runner::DocTestRunner::new();
 
-            let rustdoc_test_options = IndividualTestOptions::new(
-                &rustdoc_options,
-                &Some(format!("merged_doctest_{edition}")),
-                PathBuf::from(format!("doctest_{edition}.rs")),
-            );
+        let rustdoc_test_options = IndividualTestOptions::new(
+            &rustdoc_options,
+            &Some(format!("merged_doctest_{edition}")),
+            PathBuf::from(format!("doctest_{edition}.rs")),
+        );
 
-            for (doctest, scraped_test) in &doctests {
-                tests_runner.add_test(doctest, scraped_test, &target_str);
-            }
-            if let Ok(success) = tests_runner.run_merged_tests(
-                rustdoc_test_options,
-                edition,
-                &opts,
-                &test_args,
-                rustdoc_options,
-            ) {
-                ran_edition_tests += 1;
-                if !success {
-                    nb_errors += 1;
-                }
-                continue;
+        for (doctest, scraped_test) in &doctests {
+            tests_runner.add_test(doctest, scraped_test, &target_str);
+        }
+        if let Ok(success) = tests_runner.run_merged_tests(
+            rustdoc_test_options,
+            edition,
+            &opts,
+            &test_args,
+            rustdoc_options,
+        ) {
+            ran_edition_tests += 1;
+            if !success {
+                nb_errors += 1;
             }
-            // We failed to compile all compatible tests as one so we push them into the
-            // `standalone_tests` doctests.
-            debug!("Failed to compile compatible doctests for edition {} all at once", edition);
+            continue;
         }
+        // We failed to compile all compatible tests as one so we push them into the
+        // `standalone_tests` doctests.
+        debug!("Failed to compile compatible doctests for edition {} all at once", edition);
         for (doctest, scraped_test) in doctests {
             doctest.generate_unique_doctest(
                 &scraped_test.text,
diff --git a/tests/rustdoc-ui/doctest/failed-doctest-should-panic.stdout b/tests/rustdoc-ui/doctest/failed-doctest-should-panic.stdout
index 57a20092a5d..cb3456e087e 100644
--- a/tests/rustdoc-ui/doctest/failed-doctest-should-panic.stdout
+++ b/tests/rustdoc-ui/doctest/failed-doctest-should-panic.stdout
@@ -1,11 +1,11 @@
 
 running 1 test
-test $DIR/failed-doctest-should-panic.rs - Foo (line 9) ... FAILED
+test $DIR/failed-doctest-should-panic.rs - Foo (line 9) - should panic ... FAILED
 
 failures:
 
 ---- $DIR/failed-doctest-should-panic.rs - Foo (line 9) stdout ----
-Test executable succeeded, but it's marked `should_panic`.
+note: test did not panic as expected
 
 failures:
     $DIR/failed-doctest-should-panic.rs - Foo (line 9)
diff --git a/tests/rustdoc-ui/doctest/wrong-ast-2024.stdout b/tests/rustdoc-ui/doctest/wrong-ast-2024.stdout
index 08ec69199d3..22c8ce468fd 100644
--- a/tests/rustdoc-ui/doctest/wrong-ast-2024.stdout
+++ b/tests/rustdoc-ui/doctest/wrong-ast-2024.stdout
@@ -1,7 +1,12 @@
 
-running 3 tests
+running 1 test
+test $DIR/wrong-ast-2024.rs - three (line 17) - should panic ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME
+
+
+running 2 tests
 test $DIR/wrong-ast-2024.rs - one (line 7) ... FAILED
-test $DIR/wrong-ast-2024.rs - three (line 17) ... ok
 test $DIR/wrong-ast-2024.rs - two (line 12) ... FAILED
 
 failures:
@@ -32,5 +37,5 @@ failures:
     $DIR/wrong-ast-2024.rs - one (line 7)
     $DIR/wrong-ast-2024.rs - two (line 12)
 
-test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME
+test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME
 
diff --git a/tests/rustdoc-ui/doctest/wrong-ast.rs b/tests/rustdoc-ui/doctest/wrong-ast.rs
index dae86fbfc59..e8faaea97ee 100644
--- a/tests/rustdoc-ui/doctest/wrong-ast.rs
+++ b/tests/rustdoc-ui/doctest/wrong-ast.rs
@@ -1,7 +1,6 @@
 //@ compile-flags:--test --test-args=--test-threads=1
 //@ normalize-stdout-test: "tests/rustdoc-ui/doctest" -> "$$DIR"
 //@ normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"
-//@ normalize-stdout-test ".rs:\d+:\d+" -> ".rs:$$LINE:$$COL"
 //@ failure-status: 101
 
 /// ```
diff --git a/tests/rustdoc-ui/doctest/wrong-ast.stdout b/tests/rustdoc-ui/doctest/wrong-ast.stdout
index c827254d8c0..15494706c16 100644
--- a/tests/rustdoc-ui/doctest/wrong-ast.stdout
+++ b/tests/rustdoc-ui/doctest/wrong-ast.stdout
@@ -1,14 +1,14 @@
 
 running 3 tests
-test $DIR/wrong-ast.rs - one (line 7) ... FAILED
-test $DIR/wrong-ast.rs - three (line 17) ... ok
-test $DIR/wrong-ast.rs - two (line 12) ... FAILED
+test $DIR/wrong-ast.rs - one (line 6) ... FAILED
+test $DIR/wrong-ast.rs - three (line 16) ... ok
+test $DIR/wrong-ast.rs - two (line 11) ... FAILED
 
 failures:
 
----- $DIR/wrong-ast.rs - one (line 7) stdout ----
+---- $DIR/wrong-ast.rs - one (line 6) stdout ----
 error[E0758]: unterminated block comment
-  --> $DIR/wrong-ast.rs:$LINE:$COL
+  --> $DIR/wrong-ast.rs:7:1
    |
 LL | /* plop
    | ^^^^^^^
@@ -17,9 +17,9 @@ error: aborting due to 1 previous error
 
 For more information about this error, try `rustc --explain E0758`.
 Couldn't compile the test.
----- $DIR/wrong-ast.rs - two (line 12) stdout ----
+---- $DIR/wrong-ast.rs - two (line 11) stdout ----
 error: unexpected closing delimiter: `}`
-  --> $DIR/wrong-ast.rs:$LINE:$COL
+  --> $DIR/wrong-ast.rs:12:1
    |
 LL | } mod __doctest_1 { fn main() {
    | ^ unexpected closing delimiter
@@ -29,8 +29,8 @@ error: aborting due to 1 previous error
 Couldn't compile the test.
 
 failures:
-    $DIR/wrong-ast.rs - one (line 7)
-    $DIR/wrong-ast.rs - two (line 12)
+    $DIR/wrong-ast.rs - one (line 6)
+    $DIR/wrong-ast.rs - two (line 11)
 
 test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME
 
diff --git a/tests/rustdoc-ui/run-as-standalone.rs b/tests/rustdoc-ui/run-as-standalone.rs
deleted file mode 100644
index a0fb0340f8d..00000000000
--- a/tests/rustdoc-ui/run-as-standalone.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// This test ensures that if there is only one mergeable doctest, then it is
-// instead run as part of standalone doctests.
-
-//@ compile-flags:--test --test-args=--test-threads=1 -Zunstable-options --edition 2024
-//@ normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR"
-//@ normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"
-//@ normalize-stdout-test ".rs:\d+:\d+" -> ".rs:$$LINE:$$COL"
-//@ check-pass
-
-/// ```
-/// let x = 12;
-/// ```
-///
-/// ```compile_fail
-/// let y = x;
-/// ```
-pub fn one() {}
diff --git a/tests/rustdoc-ui/run-as-standalone.stdout b/tests/rustdoc-ui/run-as-standalone.stdout
deleted file mode 100644
index ec66f6753b1..00000000000
--- a/tests/rustdoc-ui/run-as-standalone.stdout
+++ /dev/null
@@ -1,7 +0,0 @@
-
-running 2 tests
-test $DIR/run-as-standalone.rs - one (line 10) ... ok
-test $DIR/run-as-standalone.rs - one (line 14) - compile fail ... ok
-
-test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME
-