diff --git a/src/doc/rustdoc/src/unstable-features.md b/src/doc/rustdoc/src/unstable-features.md index 26985e67abb6e..8fcb34251f987 100644 --- a/src/doc/rustdoc/src/unstable-features.md +++ b/src/doc/rustdoc/src/unstable-features.md @@ -206,17 +206,15 @@ This is very easy to use in scripts that manually invoke rustdoc, but it's also performs O(crates) work on every crate, meaning it performs O(crates2) work. When `--write-doc-meta-dir` and/or `--read-doc-meta-dir` are supplied, this is turned off. -When `--write-doc-meta-dir` is supplied, rustdoc will write the crate's metadata to that directory. -If this parameter is supplied but `--read-doc-meta-dir` isn't, it runs in *intermediate mode*: -some pages may be written to the output dir, but there is a lot of functionality that won't work -until rustdoc is run in *finalize mode*. +When `--write-doc-meta-dir` is supplied, rustdoc will write the crate's shared metadata to +that directory. This is an *intermediate mode* where it may write some files to the doc output +directory, but some features won't work until it is finalized. -When `--read-doc-meta-dir` is supplied, rustdoc runs in *finalize mode*. It will read the data from -the supplied directory, and will write it to the doc output directory in the form that the web -frontend will use. +When `--read-doc-meta-dir` is supplied, rustdoc runs in *finalize mode*. No crate source code is +passed to rustdoc when it runs in this mode. Multiple `--read-doc-meta-dir` can be passed to +rustdoc, so your build system can split the state between multiple directories if that helps. -If both `--write-doc-meta-dir` and `--read-doc-meta-dir` are specified, the crate metadata will be -written to both the HTML `--out-dir` and to the supplied `--write-doc-meta-dir`. +`--write-doc-meta-dir` and `--read-doc-meta-dir` cannot both be passed to the same rustdoc invocation. ```console $ rustdoc crate1.rs --out-dir=doc @@ -230,11 +228,30 @@ rd_("fcrate1fcrate2") To delay shared-data merging until the end of a build, so that you only have to perform O(crates) work, use `--write-doc-meta-dir` on every crate, and the last will use `--read-doc-meta-dir`. +You can use separate metadata directories: + ```console -$ rustdoc +nightly crate1.rs --write-doc-meta=crate1.d -Zunstable-options +$ rustdoc +nightly crate1.rs --write-doc-meta-dir=crate1.d -Zunstable-options +$ cat doc/search.index/crateNames/* +cat: 'doc/search.index/crateNames/*': No such file or directory +$ rustdoc +nightly crate2.rs --write-doc-meta-dir=crate2.d -Zunstable-options +$ cat doc/search.index/crateNames/* +cat: 'doc/search.index/crateNames/*': No such file or directory +$ rustdoc +nightly --read-doc-meta-dir=crate1.d --read-doc-meta-dir=crate2.d -Zunstable-options +$ cat doc/search.index/crateNames/* +rd_("fcrate1fcrate2") +``` + +Or you can use a single metadata directory for all of the crates: + +```console +$ rustdoc +nightly crate1.rs --write-doc-meta-dir=meta.d -Zunstable-options +$ cat doc/search.index/crateNames/* +cat: 'doc/search.index/crateNames/*': No such file or directory +$ rustdoc +nightly crate2.rs --write-doc-meta-dir=meta.d -Zunstable-options $ cat doc/search.index/crateNames/* cat: 'doc/search.index/crateNames/*': No such file or directory -$ rustdoc +nightly crate2.rs --read-doc-meta=crate1.d -Zunstable-options +$ rustdoc +nightly --read-doc-meta-dir=meta.d -Zunstable-options $ cat doc/search.index/crateNames/* rd_("fcrate1fcrate2") ``` diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 840f9d025c3cf..12f0b7b38f37a 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -613,7 +613,10 @@ impl Options { Ok(include_parts_dir) => include_parts_dir, Err(e) => dcx.fatal(e), }; - let mut should_merge = compute_should_merge(matches); + let mut should_merge = match compute_should_merge(matches) { + Ok(should_merge) => should_merge, + Err(e) => dcx.fatal(e), + }; if parts_out_dir.is_none() && include_parts_dir.is_empty() { // we'll need to get rid of this stuff once Cargo stops using them parts_out_dir = @@ -1114,15 +1117,16 @@ pub(crate) struct ShouldMerge { /// Extracts read_rendered_cci and write_rendered_cci from command line arguments, or /// reports an error if an invalid option was provided -fn compute_should_merge(m: &getopts::Matches) -> ShouldMerge { +fn compute_should_merge(m: &getopts::Matches) -> Result { match (m.opt_present("read-doc-meta-dir"), m.opt_present("write-doc-meta-dir")) { // shared mode - (false, false) => ShouldMerge { read_rendered_cci: true, write_rendered_cci: true }, + (false, false) => Ok(ShouldMerge { read_rendered_cci: true, write_rendered_cci: true }), // intermediate mode - (false, true) => ShouldMerge { read_rendered_cci: false, write_rendered_cci: false }, + (false, true) => Ok(ShouldMerge { read_rendered_cci: false, write_rendered_cci: false }), // finalize mode - (true, false) => ShouldMerge { read_rendered_cci: false, write_rendered_cci: true }, - (true, true) => ShouldMerge { read_rendered_cci: false, write_rendered_cci: true }, + (true, false) => Ok(ShouldMerge { read_rendered_cci: false, write_rendered_cci: true }), + // not valid + (true, true) => Err("cannot pass both --read-doc-meta-dir and --write-doc-meta-dir"), } } diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 9e52b03b3210b..56dd665177a93 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -20,11 +20,11 @@ use tracing::info; use super::print_item::{full_path, print_item, print_item_path, print_ty_path}; use super::sidebar::{ModuleLike, Sidebar, print_sidebar, sidebar_module_like}; -use super::{AllTypes, StylePath, scrape_examples_help}; +use super::{AllTypes, StylePath}; use crate::clean::types::ExternalLocation; use crate::clean::utils::has_doc_flag; use crate::clean::{self, ExternalCrate}; -use crate::config::{EmitType, ModuleSorting, RenderOptions, ShouldMerge}; +use crate::config::{EmitType, ModuleSorting, RenderOptions}; use crate::docfs::{DocFS, PathError}; use crate::error::Error; use crate::formats::FormatRenderer; @@ -36,9 +36,9 @@ use crate::html::markdown::{self, ErrorCodes, IdMap, plain_text_summary}; use crate::html::render::write_shared::write_shared; use crate::html::span_map::{LinkFromSrc, Span, collect_spans_and_sources}; use crate::html::url_parts_builder::UrlPartsBuilder; -use crate::html::{layout, sources, static_files}; +use crate::html::{layout, sources}; use crate::scrape_examples::AllCallLocations; -use crate::{DOC_RUST_LANG_ORG_VERSION, try_err}; +use crate::try_err; /// Major driving force in all rustdoc rendering. This contains information /// about where in the tree-like hierarchy rendering is occurring and controls @@ -148,9 +148,6 @@ pub(crate) struct SharedContext<'tcx> { /// The [`Cache`] used during rendering. pub(crate) cache: Cache, pub(crate) call_locations: AllCallLocations, - /// Controls whether we read / write to cci files in the doc root. Defaults read=true, - /// write=true - should_merge: ShouldMerge, } impl SharedContext<'_> { @@ -615,7 +612,6 @@ impl<'tcx> Context<'tcx> { span_correspondence_map: matches, cache, call_locations, - should_merge: options.should_merge, expanded_codes, }; @@ -666,16 +662,9 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> { fn after_krate(mut self) -> Result<(), Error> { let crate_name = self.tcx().crate_name(LOCAL_CRATE); let final_file = self.dst.join(crate_name.as_str()).join("all.html"); - let settings_file = self.dst.join("settings.html"); - let help_file = self.dst.join("help.html"); - let scrape_examples_help_file = self.dst.join("scrape-examples-help.html"); - let mut root_path = self.dst.to_str().expect("invalid path").to_owned(); - if !root_path.ends_with('/') { - root_path.push('/'); - } let shared = &self.shared; - let mut page = layout::Page { + let page = layout::Page { title: "List of all items in this crate", short_title: "All", css_class: "mod sys", @@ -705,106 +694,6 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> { let v = layout::render(&shared.layout, &page, sidebar, all.print(), &shared.style_files); shared.fs.write(final_file, v)?; - // if to avoid writing help, settings files to doc root unless we're on the final invocation - if shared.should_merge.write_rendered_cci { - // Generating settings page. - page.title = "Settings"; - page.description = "Settings of Rustdoc"; - page.root_path = "./"; - page.rust_logo = true; - - let sidebar = "

Settings

"; - let v = layout::render( - &shared.layout, - &page, - sidebar, - fmt::from_fn(|buf| { - write!( - buf, - "
\ -

Rustdoc settings

\ - \ - \ - Back\ - \ - \ -
\ - \ - ", - static_root_path = page.get_static_root_path(), - settings_js = static_files::STATIC_FILES.settings_js, - )?; - // Pre-load all theme CSS files, so that switching feels seamless. - // - // When loading settings.html as a popover, the equivalent HTML is - // generated in main.js. - for file in &shared.style_files { - if let Ok(theme) = file.basename() { - write!( - buf, - "", - root_path = page.static_root_path.unwrap_or(""), - suffix = page.resource_suffix, - )?; - } - } - Ok(()) - }), - &shared.style_files, - ); - shared.fs.write(settings_file, v)?; - - // Generating help page. - page.title = "Help"; - page.description = "Documentation for Rustdoc"; - page.root_path = "./"; - page.rust_logo = true; - - let sidebar = "

Help

"; - let v = layout::render( - &shared.layout, - &page, - sidebar, - format_args!( - "
\ -

Rustdoc help

\ - \ - \ - Back\ - \ - \ -
\ - ", - ), - &shared.style_files, - ); - shared.fs.write(help_file, v)?; - } - - // if to avoid writing files to doc root unless we're on the final invocation - if shared.layout.scrape_examples_extension && shared.should_merge.write_rendered_cci { - page.title = "About scraped examples"; - page.description = "How the scraped examples feature works in Rustdoc"; - let v = layout::render( - &shared.layout, - &page, - "", - scrape_examples_help(shared), - &shared.style_files, - ); - shared.fs.write(scrape_examples_help_file, v)?; - } - if let Some(ref redirections) = shared.redirections && !redirections.borrow().is_empty() { diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 9a08e76604df2..1c19c24b195c9 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -663,7 +663,7 @@ impl AllTypes { } } -fn scrape_examples_help(shared: &SharedContext<'_>) -> String { +fn scrape_examples_help() -> String { let mut content = SCRAPE_EXAMPLES_HELP_MD.to_owned(); content.push_str(&format!( "## More information\n\n\ @@ -680,9 +680,10 @@ fn scrape_examples_help(shared: &SharedContext<'_>) -> String { content: &content, links: &[], ids: &mut IdMap::default(), - error_codes: shared.codes, - edition: shared.edition(), - playground: &shared.playground, + // code snippets come from Rust itself, not the crate + error_codes: crate::html::markdown::ErrorCodes::No, + edition: rustc_span::edition::LATEST_STABLE_EDITION, + playground: &Default::default(), heading_offset: HeadingOffset::H1, } .write_into(f)) diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 56059c6619954..b3c2563aa3f97 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -30,6 +30,7 @@ use rustc_data_structures::flock; use rustc_data_structures::fx::{FxHashSet, FxIndexMap, FxIndexSet}; use rustc_middle::ty::TyCtxt; use rustc_middle::ty::fast_reject::DeepRejectCtxt; +use rustc_session::Session; use rustc_span::Symbol; use rustc_span::def_id::DefId; use serde::de::DeserializeOwned; @@ -49,10 +50,12 @@ use crate::html::render::ordered_json::{EscapedJson, OrderedJson}; use crate::html::render::print_item::compare_names; use crate::html::render::search_index::{SerializedSearchIndex, build_index}; use crate::html::render::sorted_template::{self, FileFormat, SortedTemplate}; -use crate::html::render::{AssocItemLink, ImplRenderingParameters, StylePath}; +use crate::html::render::{ + AssocItemLink, ImplRenderingParameters, StylePath, scrape_examples_help, +}; use crate::html::static_files::{self, suffix_path}; use crate::visit::DocVisitor; -use crate::{try_err, try_none}; +use crate::{DOC_RUST_LANG_ORG_VERSION, try_err, try_none}; pub(crate) fn write_shared( cx: &mut Context<'_>, @@ -111,28 +114,9 @@ pub(crate) fn write_shared( cx.shared.layout.css_file_extension.as_deref(), &cx.shared.resource_suffix, cx.info.include_sources, + &cx.shared.layout, + cx.sess(), )?; - match &opt.index_page { - Some(index_page) if opt.enable_index_page => { - let mut md_opts = opt.clone(); - md_opts.output = cx.dst.clone(); - md_opts.external_html = cx.shared.layout.external_html.clone(); - let file = try_err!(cx.sess().source_map().load_file(&index_page), &index_page); - try_err!( - crate::markdown::render_and_write(file, md_opts, cx.shared.edition()), - &index_page - ); - } - None if opt.enable_index_page => { - write_rendered_cci::( - || CratesIndexPart::blank(cx), - &cx.dst, - &crates, - &opt.should_merge, - )?; - } - _ => {} // they don't want an index page - } } cx.shared.fs.set_sync_only(false); @@ -150,9 +134,148 @@ pub(crate) fn write_not_crate_specific( css_file_extension: Option<&Path>, resource_suffix: &str, include_sources: bool, + layout: &layout::Layout, + sess: &Session, ) -> Result<(), Error> { write_rendered_cross_crate_info(crates, dst, opt, include_sources, resource_suffix)?; write_resources(dst, opt, style_files, css_file_extension, resource_suffix)?; + // index.html + match &opt.index_page { + Some(index_page) if opt.enable_index_page => { + let mut md_opts = opt.clone(); + md_opts.output = dst.to_path_buf(); + md_opts.external_html = layout.external_html.clone(); + let file = try_err!(sess.source_map().load_file(&index_page), &index_page); + try_err!(crate::markdown::render_and_write(file, md_opts, sess.edition()), &index_page); + } + None if opt.enable_index_page => { + write_rendered_cci::( + || CratesIndexPart::blank(layout, opt, style_files), + &dst, + &crates, + &opt.should_merge, + )?; + } + _ => {} // they don't want an index page + } + + if opt.emit.contains(&EmitType::HtmlNonStaticFiles) { + // Standalone pages for the Settings and Help popovers. + // + // Normally, these are pure DHTML popovers, but, for user convenience, + // the buttons that open them are links to these HTML files, which use the same JavaScript + // to populate the page. That way, you can open a new tab, or add a browser bookmark, + // that points at the page. + let settings_file = dst.join("settings.html"); + let help_file = dst.join("help.html"); + let scrape_examples_help_file = dst.join("scrape-examples-help.html"); + + let page = layout::Page { + title: "Settings", + short_title: "Settings", + css_class: "mod sys", + root_path: "./", + static_root_path: opt.static_root_path.as_deref(), + description: "Settings of Rustdoc", + resource_suffix: &opt.resource_suffix, + rust_logo: true, + }; + let sidebar = "

Settings

"; + let v = layout::render( + &layout, + &page, + sidebar, + fmt::from_fn(|buf| { + write!( + buf, + "
\ +

Rustdoc settings

\ + \ + \ + Back\ + \ + \ +
\ + \ + ", + static_root_path = page.get_static_root_path(), + settings_js = static_files::STATIC_FILES.settings_js, + )?; + // Pre-load all theme CSS files, so that switching feels seamless. + // + // When loading settings.html as a popover, the equivalent HTML is + // generated in main.js. + for file in style_files { + if let Ok(theme) = file.basename() { + write!( + buf, + "", + root_path = page.static_root_path.unwrap_or(""), + suffix = page.resource_suffix, + )?; + } + } + Ok(()) + }), + &style_files, + ); + try_err!(std::fs::write(&settings_file, v), &settings_file); + + let page = layout::Page { + title: "Help", + short_title: "Help", + css_class: "mod sys", + root_path: "./", + static_root_path: opt.static_root_path.as_deref(), + description: "Documentation for Rustdoc", + resource_suffix: &opt.resource_suffix, + rust_logo: true, + }; + let sidebar = "

Help

"; + let v = layout::render( + &layout, + &page, + sidebar, + format_args!( + "
\ +

Rustdoc help

\ + \ + \ + Back\ + \ + \ +
\ + ", + ), + &style_files, + ); + try_err!(std::fs::write(&help_file, v), &help_file); + + if layout.scrape_examples_extension { + let page = layout::Page { + title: "About scraped examples", + short_title: "About scraped examples", + css_class: "mod sys", + root_path: "./", + static_root_path: opt.static_root_path.as_deref(), + description: "How the scraped examples feature works in Rustdoc", + resource_suffix: &opt.resource_suffix, + rust_logo: true, + }; + let v = layout::render(&layout, &page, "", scrape_examples_help(), &style_files); + try_err!(std::fs::write(&scrape_examples_help_file, v), &scrape_examples_help_file); + } + } Ok(()) } @@ -399,19 +522,21 @@ impl CciPart for CratesIndexPart { } impl CratesIndexPart { - fn blank(cx: &Context<'_>) -> SortedTemplate<::FileFormat> { + fn blank( + layout: &layout::Layout, + opt: &RenderOptions, + style_files: &[StylePath], + ) -> SortedTemplate<::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 +