mirror of https://github.com/rust-lang/rust.git
rustdoc: add test case for modnav position when TOC is off
This commit is contained in:
parent
12a3c42ccc
commit
bead042d5e
|
@ -14,12 +14,9 @@ use rustc_span::edition::Edition;
|
|||
use rustc_span::{sym, FileName, Symbol};
|
||||
|
||||
use super::print_item::{full_path, item_path, print_item};
|
||||
use super::sidebar::{print_sidebar, sidebar_module_like, ModuleLike, Sidebar};
|
||||
use super::write_shared::write_shared;
|
||||
use super::{
|
||||
collect_spans_and_sources, scrape_examples_help,
|
||||
sidebar::{print_sidebar, sidebar_module_like, ModuleLike, Sidebar},
|
||||
AllTypes, LinkFromSrc, StylePath,
|
||||
};
|
||||
use super::{collect_spans_and_sources, scrape_examples_help, AllTypes, LinkFromSrc, StylePath};
|
||||
use crate::clean::types::ExternalLocation;
|
||||
use crate::clean::utils::has_doc_flag;
|
||||
use crate::clean::{self, ExternalCrate};
|
||||
|
|
|
@ -7,13 +7,12 @@ use rustc_hir::def::CtorKind;
|
|||
use rustc_hir::def_id::DefIdSet;
|
||||
use rustc_middle::ty::{self, TyCtxt};
|
||||
|
||||
use crate::{
|
||||
clean,
|
||||
formats::{item_type::ItemType, Impl},
|
||||
html::{format::Buffer, markdown::IdMap, markdown::MarkdownWithToc},
|
||||
};
|
||||
|
||||
use super::{item_ty_to_section, Context, ItemSection};
|
||||
use crate::clean;
|
||||
use crate::formats::item_type::ItemType;
|
||||
use crate::formats::Impl;
|
||||
use crate::html::format::Buffer;
|
||||
use crate::html::markdown::{IdMap, MarkdownWithToc};
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub(crate) enum ModuleLike {
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
// Verifies that, when TOC is hidden, modnav is always in exactly the same spot
|
||||
// This is driven by a reasonably common use case:
|
||||
//
|
||||
// - There are three or more items that might meet my needs.
|
||||
// - I open the first one, decide it's not what I want, switch to the second one using the sidebar.
|
||||
// - The second one also doesn't meet my needs, so I switch to the third.
|
||||
// - The third also doesn't meet my needs, so...
|
||||
//
|
||||
// because the sibling module nav is in exactly the same place every time,
|
||||
// it's very easy to find and switch between pages that way.
|
||||
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/enum.WhoLetTheDogOut.html"
|
||||
show-text: true
|
||||
set-local-storage: {"rustdoc-hide-toc": "true"}
|
||||
|
||||
define-function: (
|
||||
"check-positions",
|
||||
[url],
|
||||
block {
|
||||
go-to: "file://" + |DOC_PATH| + |url|
|
||||
// Checking results colors.
|
||||
assert-position: ("#rustdoc-modnav > h2", {"x": |h2_x|, "y": |h2_y|})
|
||||
assert-position: (
|
||||
"#rustdoc-modnav > ul:first-of-type > li:first-of-type",
|
||||
{"x": |x|, "y": |y|}
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
// First, at test_docs root
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/enum.WhoLetTheDogOut.html"
|
||||
store-position: ("#rustdoc-modnav > h2", {"x": h2_x, "y": h2_y})
|
||||
store-position: ("#rustdoc-modnav > ul:first-of-type > li:first-of-type", {"x": x, "y": y})
|
||||
call-function: ("check-positions", {"url": "/test_docs/enum.WhoLetTheDogOut.html"})
|
||||
call-function: ("check-positions", {"url": "/test_docs/struct.StructWithPublicUndocumentedFields.html"})
|
||||
call-function: ("check-positions", {"url": "/test_docs/codeblock_sub/index.html"})
|
||||
|
||||
// Now in a submodule
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/fields/struct.Struct.html"
|
||||
store-position: ("#rustdoc-modnav > h2", {"x": h2_x, "y": h2_y})
|
||||
store-position: ("#rustdoc-modnav > ul:first-of-type > li:first-of-type", {"x": x, "y": y})
|
||||
call-function: ("check-positions", {"url": "/test_docs/fields/struct.Struct.html"})
|
||||
call-function: ("check-positions", {"url": "/test_docs/fields/union.Union.html"})
|
||||
call-function: ("check-positions", {"url": "/test_docs/fields/enum.Enum.html"})
|
Loading…
Reference in New Issue