From d7159bdbad331266a4b62dd316408f54e225e53e Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 30 Aug 2021 16:47:17 +0200 Subject: [PATCH] Add tests for implementors associated types display --- src/test/rustdoc-gui/implementors.goml | 18 +++++++++--------- .../rustdoc-gui/src/lib2/implementors/lib.rs | 6 +++++- src/test/rustdoc-gui/src/lib2/lib.rs | 4 +++- src/test/rustdoc-gui/toggle-implementors.goml | 13 +++++++++++++ .../trait-impl-items-links-and-anchors.rs | 11 ++++++++++- 5 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 src/test/rustdoc-gui/toggle-implementors.goml diff --git a/src/test/rustdoc-gui/implementors.goml b/src/test/rustdoc-gui/implementors.goml index 87e4f2a7bd1..c9042eb4813 100644 --- a/src/test/rustdoc-gui/implementors.goml +++ b/src/test/rustdoc-gui/implementors.goml @@ -3,14 +3,14 @@ goto: file://|DOC_PATH|/implementors/trait.Whatever.html assert: "#implementors-list" // There are supposed to be two implementors listed. -assert-count: ("#implementors-list > .impl", 2) +assert-count: ("#implementors-list .impl", 2) // Now we check that both implementors have an anchor, an ID and a similar DOM. -assert: ("#implementors-list > .impl:nth-child(1) > a.anchor") -assert-attribute: ("#implementors-list > .impl:nth-child(1)", {"id": "impl-Whatever"}) -assert-attribute: ("#implementors-list > .impl:nth-child(1) > a.anchor", {"href": "#impl-Whatever"}) -assert: "#implementors-list > .impl:nth-child(1) > .code-header.in-band" +assert: ("#implementors-list .impl:nth-child(1) > a.anchor") +assert-attribute: ("#implementors-list .impl:nth-child(1)", {"id": "impl-Whatever"}) +assert-attribute: ("#implementors-list .impl:nth-child(1) > a.anchor", {"href": "#impl-Whatever"}) +assert: "#implementors-list .impl:nth-child(1) > .code-header.in-band" -assert: ("#implementors-list > .impl:nth-child(2) > a.anchor") -assert-attribute: ("#implementors-list > .impl:nth-child(2)", {"id": "impl-Whatever-1"}) -assert-attribute: ("#implementors-list > .impl:nth-child(2) > a.anchor", {"href": "#impl-Whatever-1"}) -assert: "#implementors-list > .impl:nth-child(2) > .code-header.in-band" +assert: ("#implementors-list .impl:nth-child(2) > a.anchor") +assert-attribute: ("#implementors-list .impl:nth-child(2)", {"id": "impl-Whatever-1"}) +assert-attribute: ("#implementors-list .impl:nth-child(2) > a.anchor", {"href": "#impl-Whatever-1"}) +assert: "#implementors-list .impl:nth-child(2) > .code-header.in-band" diff --git a/src/test/rustdoc-gui/src/lib2/implementors/lib.rs b/src/test/rustdoc-gui/src/lib2/implementors/lib.rs index 4b2f6962e30..6417a6ac5af 100644 --- a/src/test/rustdoc-gui/src/lib2/implementors/lib.rs +++ b/src/test/rustdoc-gui/src/lib2/implementors/lib.rs @@ -1,7 +1,11 @@ pub trait Whatever { + type Foo; + fn method() {} } pub struct Struct; -impl Whatever for Struct {} +impl Whatever for Struct { + type Foo = u8; +} diff --git a/src/test/rustdoc-gui/src/lib2/lib.rs b/src/test/rustdoc-gui/src/lib2/lib.rs index 36373d24971..cb63a9f6002 100644 --- a/src/test/rustdoc-gui/src/lib2/lib.rs +++ b/src/test/rustdoc-gui/src/lib2/lib.rs @@ -38,7 +38,9 @@ impl Trait for Foo { } -impl implementors::Whatever for Foo {} +impl implementors::Whatever for Foo { + type Foo = u32; +} pub mod sub_mod { /// ```txt diff --git a/src/test/rustdoc-gui/toggle-implementors.goml b/src/test/rustdoc-gui/toggle-implementors.goml new file mode 100644 index 00000000000..4b2a266c712 --- /dev/null +++ b/src/test/rustdoc-gui/toggle-implementors.goml @@ -0,0 +1,13 @@ +// This test ensures two things: +// +// 1. The implementors toggle are not open by default. +// 2. The "auto-collapse-implementors" setting is working as expected. +goto: file://|DOC_PATH|/implementors/trait.Whatever.html + +// First, checking that they are not open by default. +assert-attribute-false: ("#implementors-list > details", {"open": ""}, ALL) + +// Second, checking "auto-collapse-implementors" setting. +local-storage: {"rustdoc-auto-collapse-implementors": false} +reload: +assert-attribute: ("#implementors-list > details", {"open": ""}, ALL) diff --git a/src/test/rustdoc/trait-impl-items-links-and-anchors.rs b/src/test/rustdoc/trait-impl-items-links-and-anchors.rs index ddbe93febdc..4d25835bf08 100644 --- a/src/test/rustdoc/trait-impl-items-links-and-anchors.rs +++ b/src/test/rustdoc/trait-impl-items-links-and-anchors.rs @@ -1,6 +1,6 @@ pub trait MyTrait { type Assoc; - const VALUE: u32; + const VALUE: u32 = 12; fn trait_function(&self); fn defaulted(&self) {} fn defaulted_override(&self) {} @@ -38,9 +38,11 @@ fn defaulted_override(&self) {} } impl MyTrait for MyStruct { + // @has trait_impl_items_links_and_anchors/trait.MyTrait.html '//div[@id="associatedtype.Assoc-3"]//a[@class="anchor"]/@href' #associatedtype.Assoc-3 // @has trait_impl_items_links_and_anchors/struct.MyStruct.html '//div[@id="associatedtype.Assoc"]//a[@class="type"]/@href' trait.MyTrait.html#associatedtype.Assoc // @has trait_impl_items_links_and_anchors/struct.MyStruct.html '//div[@id="associatedtype.Assoc"]//a[@class="anchor"]/@href' #associatedtype.Assoc type Assoc = bool; + // @has trait_impl_items_links_and_anchors/trait.MyTrait.html '//div[@id="associatedconstant.VALUE-3"]//a[@class="anchor"]/@href' #associatedconstant.VALUE-3 // @has trait_impl_items_links_and_anchors/struct.MyStruct.html '//div[@id="associatedconstant.VALUE"]//a[@class="constant"]/@href' trait.MyTrait.html#associatedconstant.VALUE // @has trait_impl_items_links_and_anchors/struct.MyStruct.html '//div[@id="associatedconstant.VALUE"]//a[@class="anchor"]/@href' #associatedconstant.VALUE const VALUE: u32 = 20; @@ -55,3 +57,10 @@ fn defaulted_override(&self) {} } pub struct MyStruct; + +// We check that associated items with default values aren't generated in the implementors list. +impl MyTrait for (u8, u8) { + // @!has trait_impl_items_links_and_anchors/trait.MyTrait.html '//div[@id="associatedconstant.VALUE-4"]' + type Assoc = bool; + fn trait_function(&self) {} +} -- GitLab