about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustdoc/doctest.rs2
-rw-r--r--src/test/run-make-fulldeps/doctests-keep-binaries/Makefile21
-rw-r--r--src/test/run-make-fulldeps/doctests-keep-binaries/t.rs11
3 files changed, 33 insertions, 1 deletions
diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs
index bf14a17c076..e61b7a09038 100644
--- a/src/librustdoc/doctest.rs
+++ b/src/librustdoc/doctest.rs
@@ -361,7 +361,7 @@ fn run_test(
     for debugging_option_str in &options.debugging_opts_strs {
         compiler.arg("-Z").arg(&debugging_option_str);
     }
-    if no_run && !compile_fail {
+    if no_run && !compile_fail && options.persist_doctests.is_none() {
         compiler.arg("--emit=metadata");
     }
     compiler.arg("--target").arg(match target {
diff --git a/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile b/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile
new file mode 100644
index 00000000000..273c8980b02
--- /dev/null
+++ b/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile
@@ -0,0 +1,21 @@
+include ../../run-make-fulldeps/tools.mk
+
+# Check that valid binaries are persisted by running them, regardless of whether the --run or --no-run option is used.
+
+all: run no_run
+
+run:
+	mkdir -p $(TMPDIR)/doctests
+	$(RUSTC) --crate-type rlib t.rs
+	$(RUSTDOC) -Zunstable-options --test --persist-doctests $(TMPDIR)/doctests --extern t=$(TMPDIR)/libt.rlib t.rs
+	$(TMPDIR)/doctests/t_rs_2_0/rust_out
+	$(TMPDIR)/doctests/t_rs_8_0/rust_out
+	rm -rf $(TMPDIR)/doctests
+
+no_run:
+	mkdir -p $(TMPDIR)/doctests
+	$(RUSTC) --crate-type rlib t.rs
+	$(RUSTDOC) -Zunstable-options --test --persist-doctests $(TMPDIR)/doctests --extern t=$(TMPDIR)/libt.rlib t.rs --no-run
+	$(TMPDIR)/doctests/t_rs_2_0/rust_out
+	$(TMPDIR)/doctests/t_rs_8_0/rust_out
+	rm -rf $(TMPDIR)/doctests
diff --git a/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs b/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs
new file mode 100644
index 00000000000..c38cf0a0b25
--- /dev/null
+++ b/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs
@@ -0,0 +1,11 @@
+/// Fungle the foople.
+/// ```
+/// t::foople();
+/// ```
+pub fn foople() {}
+
+/// Flomble the florp
+/// ```
+/// t::florp();
+/// ```
+pub fn florp() {}