::FileFormat> {
let page = layout::Page {
title: "Index of crates",
short_title: "Crates",
css_class: "mod sys",
root_path: "./",
- static_root_path: cx.shared.static_root_path.as_deref(),
+ static_root_path: opt.static_root_path.as_deref(),
description: "List of crates",
- resource_suffix: &cx.shared.resource_suffix,
+ resource_suffix: &opt.resource_suffix,
rust_logo: true,
};
- let layout = &cx.shared.layout;
- let style_files = &cx.shared.style_files;
const DELIMITER: &str = "\u{FFFC}"; // users are being naughty if they have this
let content = format_args!(
"\
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs
index be830cad6c735..4c0c80eb749a7 100644
--- a/src/librustdoc/lib.rs
+++ b/src/librustdoc/lib.rs
@@ -77,7 +77,7 @@ use rustc_errors::DiagCtxtHandle;
use rustc_hir::def_id::LOCAL_CRATE;
use rustc_interface::interface;
use rustc_middle::ty::TyCtxt;
-use rustc_session::config::{ErrorOutputType, RustcOptGroup, make_crate_type_option};
+use rustc_session::config::{ErrorOutputType, Input, RustcOptGroup, make_crate_type_option};
use rustc_session::{EarlyDiagCtxt, getopts};
use rustc_span::{BytePos, Span, SyntaxContext};
use tracing::info;
@@ -772,25 +772,40 @@ fn run_renderer<
/// Renders and writes cross-crate info files, like the search index. This function exists so that
/// we can run rustdoc without a crate root in the `--merge=finalize` mode. Cross-crate info files
/// discovered via `--read-doc-meta-dir` are combined and written to the doc root.
-fn run_merge_finalize(opt: config::RenderOptions) -> Result<(), error::Error> {
+fn run_merge_finalize(
+ render_options: config::RenderOptions,
+ compiler: &interface::Compiler,
+) -> Result<(), error::Error> {
assert!(
- opt.should_merge.write_rendered_cci,
+ render_options.should_merge.write_rendered_cci,
"config.rs only allows us to return InputMode::NoInputMergeFinalize if --merge=finalize"
);
assert!(
- !opt.should_merge.read_rendered_cci,
+ !render_options.should_merge.read_rendered_cci,
"config.rs only allows us to return InputMode::NoInputMergeFinalize if --merge=finalize"
);
- let crates = html::render::CrateInfo::read_many(&opt.include_parts_dir)?;
- let include_sources = !opt.html_no_source;
+ let crates = html::render::CrateInfo::read_many(&render_options.include_parts_dir)?;
+ let include_sources = !render_options.html_no_source;
+
html::render::write_not_crate_specific(
&crates,
- &opt.output,
- &opt,
- &opt.themes,
- opt.extension_css.as_deref(),
- &opt.resource_suffix,
+ &render_options.output,
+ &render_options,
+ &render_options.themes,
+ render_options.extension_css.as_deref(),
+ &render_options.resource_suffix,
include_sources,
+ &crate::html::layout::Layout {
+ logo: String::new(),
+ favicon: String::new(),
+ external_html: render_options.external_html.clone(),
+ default_settings: render_options.default_settings.clone(),
+ krate: String::new(),
+ krate_version: String::new(),
+ css_file_extension: render_options.extension_css.clone(),
+ scrape_examples_extension: false,
+ },
+ &compiler.sess,
)?;
Ok(())
}
@@ -834,10 +849,18 @@ fn main_args(early_dcx: &mut EarlyDiagCtxt, at_args: &[String]) {
let input = match input {
config::InputMode::HasFile(input) => input,
config::InputMode::NoInputMergeFinalize => {
+ let config = core::create_config(
+ Input::Str {
+ name: rustc_span::FileName::Custom(String::new()),
+ input: String::new(),
+ },
+ options,
+ &render_options,
+ );
return wrap_return(
dcx,
- rustc_span::create_session_globals_then(options.edition, &[], None, || {
- run_merge_finalize(render_options)
+ interface::run_compiler(config, |compiler| {
+ run_merge_finalize(render_options, compiler)
.map_err(|e| format!("could not write merged cross-crate info: {e}"))
}),
);
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs
new file mode 100644
index 0000000000000..6cfc6ed9230ec
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs
@@ -0,0 +1,56 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let parts_out_dir = path("parts");
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("quebec.json").exists());
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("tango.json").exists());
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("sierra.json").exists());
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("tango.rs").run();
+ htmldocck().arg(&out_dir).arg("quebec.rs").run();
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
similarity index 88%
rename from tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
index 10f12ad8d1184..cdca794601216 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs
@@ -1,13 +1,10 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html
//@ has index.html '//h1' 'List of all crates'
//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
//@ has index.html '//ul[@class="all-items"]//a[@href="sierra/index.html"]' 'sierra'
//@ has index.html '//ul[@class="all-items"]//a[@href="tango/index.html"]' 'tango'
+//@ has help.html
+//@ has settings.html
//@ has quebec/struct.Quebec.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
similarity index 73%
rename from tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
index 986c58deb5d6b..b512f4f7677c8 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs
@@ -1,15 +1,3 @@
-//@ aux-build:tango.rs
-//@ aux-build:romeo.rs
-//@ aux-build:quebec.rs
-//@ aux-build:sierra.rs
-//@ build-aux-docs
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/romeo
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/sierra
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html '//h1' 'List of all crates'
//@ has index.html
//@ has index.html '//ul[@class="all-items"]//a[@href="indigo/index.html"]' 'indigo'
@@ -17,6 +5,8 @@
//@ has index.html '//ul[@class="all-items"]//a[@href="romeo/index.html"]' 'romeo'
//@ has index.html '//ul[@class="all-items"]//a[@href="sierra/index.html"]' 'sierra'
//@ has index.html '//ul[@class="all-items"]//a[@href="tango/index.html"]' 'tango'
+//@ has help.html
+//@ has settings.html
//@ !has quebec/struct.Quebec.html
//@ !has romeo/type.Romeo.html
//@ !has sierra/struct.Sierra.html
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs
new file mode 100644
index 0000000000000..0191e659c5eef
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs
@@ -0,0 +1,91 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir("quebec-out")
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec"))
+ .arg("--enable-index-page")
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir("tango-out")
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/tango"))
+ .arg("--enable-index-page")
+ .run();
+
+ rustc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .crate_type("rlib")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .run();
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir("sierra-out")
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra"))
+ .arg("--enable-index-page")
+ .run();
+
+ rustc()
+ .input("romeo.rs")
+ .crate_name("romeo")
+ .crate_type("rlib")
+ .extern_("sierra", rust_lib_name("sierra"))
+ .library_search_path(cwd())
+ .run();
+ rustdoc()
+ .input("romeo.rs")
+ .crate_name("romeo")
+ .extern_("sierra", rust_lib_name("sierra"))
+ .library_search_path(cwd())
+ .out_dir("romeo-out")
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/romeo"))
+ .arg("--enable-index-page")
+ .run();
+
+ rustdoc()
+ .input("indigo.rs")
+ .crate_name("indigo")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/indigo"))
+ .arg("--enable-index-page")
+ .run();
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg("--read-doc-meta-dir=info/doc.parts/tango")
+ .arg("--read-doc-meta-dir=info/doc.parts/romeo")
+ .arg("--read-doc-meta-dir=info/doc.parts/quebec")
+ .arg("--read-doc-meta-dir=info/doc.parts/sierra")
+ .arg("--read-doc-meta-dir=info/doc.parts/indigo")
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("indigo.rs").run();
+}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/romeo.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/romeo.rs
new file mode 100644
index 0000000000000..772119ef133c2
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/romeo.rs
@@ -0,0 +1,2 @@
+extern crate sierra;
+pub type Romeo = sierra::Sierra;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/sierra.rs
new file mode 100644
index 0000000000000..796f5118d28b9
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/sierra.rs
@@ -0,0 +1,3 @@
+extern crate tango;
+pub struct Sierra;
+impl tango::Tango for Sierra {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs
new file mode 100644
index 0000000000000..1d6e004b078f0
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs
@@ -0,0 +1,47 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let parts_out_dir = path("parts");
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("quebec.json").exists());
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("tango.json").exists());
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("sierra.json").exists());
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs
similarity index 67%
rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs
index 9a6ca3c6dd41c..21639dc019d70 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs
@@ -1,10 +1,6 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ !has index.html
+//@ !has help.html
+//@ !has settings.html
//@ has sierra/struct.Sierra.html
//@ hasraw sierra/struct.Sierra.html 'Tango'
//@ !has trait.impl/tango/trait.Tango.js
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs
new file mode 100644
index 0000000000000..84dfda3b040c0
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs
@@ -0,0 +1,45 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rfs, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ // all these invocations of rustdoc write the parts,
+ // but none of them ever reads them
+ .arg("--write-doc-meta-dir=parts-unused")
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=parts-unused")
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=parts-unused")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
similarity index 66%
rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
index 9d5a1a3c17bfa..e5d3f99568df7 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs
@@ -1,10 +1,6 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ !has index.html
+//@ !has help.html
+//@ !has settings.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
//@ hasraw sierra/struct.Sierra.html 'Tango'
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs
new file mode 100644
index 0000000000000..8b650055953fe
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs
@@ -0,0 +1,51 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec"))
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/tango"))
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra"))
+ .run();
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg(format!("--read-doc-meta-dir=info/doc.parts/tango"))
+ .arg(format!("--read-doc-meta-dir=info/doc.parts/sierra"))
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs
similarity index 77%
rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs
index 2d94321ed7465..9a485b13e09b9 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs
@@ -1,9 +1,3 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has quebec/struct.Quebec.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs
new file mode 100644
index 0000000000000..537058d09f66a
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs
@@ -0,0 +1,52 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec"))
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/tango"))
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra"))
+ .run();
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg(format!("--read-doc-meta-dir=info/doc.parts/tango"))
+ .arg(format!("--read-doc-meta-dir=info/doc.parts/quebec"))
+ .arg(format!("--read-doc-meta-dir=info/doc.parts/sierra"))
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs
similarity index 78%
rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs
index 6a2dbb1c31ccc..b6862f4e3c2b0 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs
@@ -1,15 +1,10 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html
//@ has index.html '//h1' 'List of all crates'
//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
//@ has index.html '//ul[@class="all-items"]//a[@href="sierra/index.html"]' 'sierra'
//@ has index.html '//ul[@class="all-items"]//a[@href="tango/index.html"]' 'tango'
+//@ has help.html
+//@ has settings.html
//@ has sierra/struct.Sierra.html
//@ hasraw trait.impl/tango/trait.Tango.js 'struct.Sierra.html'
//@ hasraw search.index/name/*.js 'Tango'
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs
new file mode 100644
index 0000000000000..ced70ac3f526f
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs
@@ -0,0 +1,48 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec.d"))
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir=info/doc.parts"))
+ .run();
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg(format!("--read-doc-meta-dir=info/doc.parts"))
+ .arg("--enable-index-page")
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/sierra.rs
similarity index 82%
rename from tests/rustdoc-html/merge-cross-crate-info/overwrite/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite/sierra.rs
index 57c9732ba8dd7..d95d1495a3210 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/sierra.rs
@@ -1,8 +1,3 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has quebec/struct.Quebec.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/single-crate-finalize/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs
similarity index 82%
rename from tests/rustdoc-html/merge-cross-crate-info/single-crate-finalize/quebec.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs
index c157380edf1f9..4541fe7a3104b 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/single-crate-finalize/quebec.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs
@@ -1,9 +1,8 @@
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html
//@ has index.html '//h1' 'List of all crates'
//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
+//@ has help.html
+//@ has settings.html
//@ has quebec/struct.Quebec.html
//@ hasraw search.index/name/*.js 'Quebec'
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs
new file mode 100644
index 0000000000000..79f05c37e3104
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs
@@ -0,0 +1,26 @@
+//@ needs-target-std
+
+use run_make_support::{htmldocck, path, rustc, rustdoc};
+
+fn main() {
+ let parts_out_dir = path("parts");
+ let out_dir = path("out");
+
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display()))
+ .run();
+ assert!(parts_out_dir.join("quebec.json").exists());
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("quebec.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/single-crate-read-write/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs
similarity index 82%
rename from tests/rustdoc-html/merge-cross-crate-info/single-crate-read-write/quebec.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs
index 4fd510e31227c..ff955c6efe053 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/single-crate-read-write/quebec.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs
@@ -1,9 +1,8 @@
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html
//@ has index.html '//h1' 'List of all crates'
//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
+//@ has help.html
+//@ has settings.html
//@ has quebec/struct.Quebec.html
//@ hasraw search.index/name/*.js 'Quebec'
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/rmake.rs
new file mode 100644
index 0000000000000..f1f3fb4ae3e3d
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/rmake.rs
@@ -0,0 +1,17 @@
+//@ needs-target-std
+
+use run_make_support::{htmldocck, path, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("quebec.rs").run();
+}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs
new file mode 100644
index 0000000000000..28bbbc8fda039
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs
@@ -0,0 +1,52 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/quebec")
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/tango")
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/sierra")
+ .run();
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg("--read-doc-meta-dir=info/doc.parts/tango")
+ .arg("--read-doc-meta-dir=info/doc.parts/quebec")
+ .arg("--read-doc-meta-dir=info/doc.parts/sierra")
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs
similarity index 78%
rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs
index 945e8cf84dc7d..980632473a405 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs
@@ -1,15 +1,10 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html
//@ has index.html '//h1' 'List of all crates'
//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
//@ has index.html '//ul[@class="all-items"]//a[@href="sierra/index.html"]' 'sierra'
//@ has index.html '//ul[@class="all-items"]//a[@href="tango/index.html"]' 'tango'
+//@ has help.html
+//@ has settings.html
//@ has quebec/struct.Quebec.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs
new file mode 100644
index 0000000000000..f43d940a32af1
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs
@@ -0,0 +1,43 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--enable-index-page")
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--enable-index-page")
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
similarity index 88%
rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
index 67ce91d1e225a..31b5270b68e1b 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs
@@ -1,13 +1,10 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ has index.html
//@ has index.html '//h1' 'List of all crates'
//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
//@ has index.html '//ul[@class="all-items"]//a[@href="sierra/index.html"]' 'sierra'
//@ has index.html '//ul[@class="all-items"]//a[@href="tango/index.html"]' 'tango'
+//@ has help.html
+//@ has settings.html
//@ has quebec/struct.Quebec.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/quebec.rs
new file mode 100644
index 0000000000000..3ef377298cc6e
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/quebec.rs
@@ -0,0 +1 @@
+pub struct Quebec;
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs
new file mode 100644
index 0000000000000..bd8fd59ed1c2a
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs
@@ -0,0 +1,43 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+
+ rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run();
+ rustdoc()
+ .input("quebec.rs")
+ .crate_name("quebec")
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/quebec")
+ .run();
+
+ rustc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .crate_type("rlib")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .run();
+ rustdoc()
+ .input("tango.rs")
+ .crate_name("tango")
+ .extern_("quebec", rust_lib_name("quebec"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/tango")
+ .run();
+
+ rustdoc()
+ .input("sierra.rs")
+ .crate_name("sierra")
+ .extern_("tango", rust_lib_name("tango"))
+ .library_search_path(cwd())
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/sierra")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("sierra.rs").run();
+}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs
similarity index 69%
rename from tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/sierra.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs
index 61c60cf7c9e15..d8b8bc1271d51 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/sierra.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs
@@ -1,10 +1,6 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
//@ !has index.html
+//@ !has help.html
+//@ !has settings.html
//@ has sierra/struct.Sierra.html
//@ has tango/trait.Tango.html
//@ hasraw sierra/struct.Sierra.html 'Tango'
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/tango.rs
new file mode 100644
index 0000000000000..a9a44e06c7797
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/tango.rs
@@ -0,0 +1,2 @@
+extern crate quebec;
+pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/echo.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs
similarity index 74%
rename from tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/echo.rs
rename to tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs
index 998bb559df8c1..50fd79fa1b818 100644
--- a/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/echo.rs
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs
@@ -1,8 +1,3 @@
-//@ aux-build:foxtrot.rs
-//@ build-aux-docs
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts/foxtrot
-//@ doc-flags:-Zunstable-options
-
//@ has echo/enum.Echo.html
//@ hasraw echo/enum.Echo.html 'Foxtrot'
//@ hasraw trait.impl/foxtrot/trait.Foxtrot.js 'enum.Echo.html'
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/foxtrot.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/foxtrot.rs
new file mode 100644
index 0000000000000..390cef74d4730
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/foxtrot.rs
@@ -0,0 +1 @@
+pub trait Foxtrot {}
diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs
new file mode 100644
index 0000000000000..69275a28ca8f9
--- /dev/null
+++ b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs
@@ -0,0 +1,36 @@
+//@ needs-target-std
+
+use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc};
+
+fn main() {
+ let out_dir = path("out");
+ let alt_out_dir = path("alt-out");
+
+ rustc().input("foxtrot.rs").crate_name("foxtrot").crate_type("rlib").run();
+ rustdoc()
+ .input("foxtrot.rs")
+ .crate_name("foxtrot")
+ .out_dir(&alt_out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/foxtrot")
+ .run();
+
+ rustdoc()
+ .input("echo.rs")
+ .crate_name("echo")
+ .extern_("foxtrot", rust_lib_name("foxtrot"))
+ .out_dir(&out_dir)
+ .arg("-Zunstable-options")
+ .arg("--write-doc-meta-dir=info/doc.parts/echo")
+ .run();
+
+ rustdoc()
+ .arg("-Zunstable-options")
+ .out_dir(&out_dir)
+ .arg("--read-doc-meta-dir=info/doc.parts/echo")
+ .arg("--read-doc-meta-dir=info/doc.parts/foxtrot")
+ .arg("--enable-index-page")
+ .run();
+
+ htmldocck().arg(&out_dir).arg("echo.rs").run();
+}
diff --git a/tests/run-make/rustdoc/merge-dir-alias/rmake.rs b/tests/run-make/rustdoc/merge-dir-alias/rmake.rs
index 8a5c1aa2af723..3e4941c7a8769 100644
--- a/tests/run-make/rustdoc/merge-dir-alias/rmake.rs
+++ b/tests/run-make/rustdoc/merge-dir-alias/rmake.rs
@@ -18,12 +18,11 @@ fn main() {
.run();
assert!(parts_out_dir.join("dep1.json").exists());
- let output = rustdoc()
+ rustdoc()
.arg("-Zunstable-options")
.out_dir(&out_dir)
.arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
.run();
- output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug.");
rustdoc()
.input("dep2.rs")
@@ -33,12 +32,11 @@ fn main() {
.run();
assert!(parts_out_dir.join("dep2.json").exists());
- let output2 = rustdoc()
+ rustdoc()
.arg("-Zunstable-options")
.out_dir(&out_dir)
.arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
.run();
- output2.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug.");
rustdoc()
.input("dep1.rs")
@@ -48,12 +46,11 @@ fn main() {
.run();
assert!(parts_out_dir.join("dep1.json").exists());
- let output3 = rustdoc()
+ rustdoc()
.arg("-Zunstable-options")
.out_dir(&out_dir)
.arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
.run();
- output3.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug.");
// dep_missing is different, because --write-doc-meta-dir is not supplied
rustdoc().input("dep_missing.rs").out_dir(&out_dir).run();
@@ -67,12 +64,11 @@ fn main() {
.run();
assert!(parts_out_dir.join("dep1.json").exists());
- let output4 = rustdoc()
+ rustdoc()
.arg("-Zunstable-options")
.out_dir(&out_dir)
.arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
.run();
- output4.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug.");
htmldocck().arg(&out_dir).arg("dep1.rs").run();
htmldocck().arg(&out_dir).arg("dep2.rs").run();
diff --git a/tests/run-make/rustdoc/merge-dir/rmake.rs b/tests/run-make/rustdoc/merge-dir/rmake.rs
index d2d31138bf3c6..e0f144f6234f4 100644
--- a/tests/run-make/rustdoc/merge-dir/rmake.rs
+++ b/tests/run-make/rustdoc/merge-dir/rmake.rs
@@ -30,12 +30,11 @@ fn main() {
rustdoc().input("dep_missing.rs").out_dir(&out_dir).run();
assert!(parts_out_dir.join("dep2.json").exists());
- let output = rustdoc()
+ rustdoc()
.arg("-Zunstable-options")
.out_dir(&out_dir)
.arg(format!("--read-doc-meta-dir={}", parts_out_dir.display()))
.run();
- output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug.");
htmldocck().arg(&out_dir).arg("dep1.rs").run();
htmldocck().arg(&out_dir).arg("dep2.rs").run();
diff --git a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/quebec.rs
deleted file mode 100644
index c4b3ce498576c..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/quebec.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/tango.rs
deleted file mode 100644
index 299a673418713..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/tango.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/quebec.rs
deleted file mode 100644
index d2af9af496bc3..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/quebec.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/romeo.rs b/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/romeo.rs
deleted file mode 100644
index bcccc05299a79..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/romeo.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-//@ aux-build:sierra.rs
-//@ build-aux-docs
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/romeo
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate sierra;
-pub type Romeo = sierra::Sierra;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/sierra.rs b/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/sierra.rs
deleted file mode 100644
index 9d5e564720169..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/sierra.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//@ aux-build:tango.rs
-//@ build-aux-docs
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate tango;
-pub struct Sierra;
-impl tango::Tango for Sierra {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/tango.rs
deleted file mode 100644
index 577c486a3adfb..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/tango.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/quebec.rs
deleted file mode 100644
index d2af9af496bc3..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/quebec.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/tango.rs
deleted file mode 100644
index 577c486a3adfb..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/tango.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/quebec.rs
deleted file mode 100644
index 442eacb91f480..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/quebec.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/tango.rs
deleted file mode 100644
index e10bab806ea0c..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/tango.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/quebec.rs
deleted file mode 100644
index 442eacb91f480..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/quebec.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/tango.rs
deleted file mode 100644
index e10bab806ea0c..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/tango.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/quebec.rs
deleted file mode 100644
index d2af9af496bc3..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/quebec.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/tango.rs
deleted file mode 100644
index 577c486a3adfb..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/tango.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/quebec.rs
deleted file mode 100644
index 35098e62cede9..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/quebec.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec.d
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/tango.rs
deleted file mode 100644
index dcb7965dde86e..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/tango.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--read-doc-meta-dir=info/doc.parts
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/single-crate-write-anyway/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/single-crate-write-anyway/quebec.rs
deleted file mode 100644
index fde3635e62250..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/single-crate-write-anyway/quebec.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-//@ doc-flags:--read-doc-meta-dir=.
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-//@ has index.html
-//@ has index.html '//h1' 'List of all crates'
-//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec'
-//@ has quebec/struct.Quebec.html
-//@ hasraw search.index/name/*.js 'Quebec'
-
-// we can --write-doc-meta-dir, but that doesn't do anything other than create
-// the file
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/quebec.rs
deleted file mode 100644
index 442eacb91f480..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/quebec.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/tango.rs
deleted file mode 100644
index e10bab806ea0c..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/tango.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/quebec.rs
deleted file mode 100644
index c4b3ce498576c..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/quebec.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/tango.rs
deleted file mode 100644
index 299a673418713..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/tango.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/quebec.rs b/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/quebec.rs
deleted file mode 100644
index 442eacb91f480..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/quebec.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-pub struct Quebec;
diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/tango.rs b/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/tango.rs
deleted file mode 100644
index e10bab806ea0c..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/tango.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ aux-build:quebec.rs
-//@ build-aux-docs
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango
-//@ doc-flags:--enable-index-page
-//@ doc-flags:-Zunstable-options
-
-extern crate quebec;
-pub trait Tango {}
diff --git a/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/auxiliary/foxtrot.rs b/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/auxiliary/foxtrot.rs
deleted file mode 100644
index 713f8812a55a6..0000000000000
--- a/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/auxiliary/foxtrot.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//@ unique-doc-out-dir
-//@ doc-flags:--write-doc-meta-dir=info/doc.parts/foxtrot
-//@ doc-flags:-Zunstable-options
-
-pub trait Foxtrot {}
diff --git a/tests/rustdoc-ui/doc-meta-read-write-err.rs b/tests/rustdoc-ui/doc-meta-read-write-err.rs
new file mode 100644
index 0000000000000..64a8ce4185b35
--- /dev/null
+++ b/tests/rustdoc-ui/doc-meta-read-write-err.rs
@@ -0,0 +1,2 @@
+//@ compile-flags:-Z unstable-options --read-doc-meta-dir . --write-doc-meta-dir .
+//~? ERROR cannot pass both --read-doc-meta-dir and --write-doc-meta-dir
diff --git a/tests/rustdoc-ui/doc-meta-read-write-err.stderr b/tests/rustdoc-ui/doc-meta-read-write-err.stderr
new file mode 100644
index 0000000000000..818deb34300cd
--- /dev/null
+++ b/tests/rustdoc-ui/doc-meta-read-write-err.stderr
@@ -0,0 +1,2 @@
+error: cannot pass both --read-doc-meta-dir and --write-doc-meta-dir
+