From d5a24b0a33bccb69e8ba19da42a15b5a69639e22 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sun, 2 May 2021 16:50:14 +0200 Subject: [PATCH 1/3] Move rustdoc-gui rust libraries into their own folder and prepare the field for more libraries --- src/bootstrap/test.rs | 21 +++++++++++++++---- src/test/rustdoc-gui/basic-code.goml | 2 +- src/test/rustdoc-gui/basic.goml | 2 +- .../rustdoc-gui/check_info_sign_position.goml | 2 +- src/test/rustdoc-gui/code-sidebar-toggle.goml | 2 +- src/test/rustdoc-gui/hash-item-expansion.goml | 2 +- .../rustdoc-gui/impl-default-expansion.goml | 2 +- src/test/rustdoc-gui/list_code_block.goml | 2 +- src/test/rustdoc-gui/search-input-mobile.goml | 2 +- ...rch-tab-selection-if-current-is-empty.goml | 6 +++--- src/test/rustdoc-gui/shortcuts.goml | 2 +- src/test/rustdoc-gui/source-code-page.goml | 4 ++-- src/test/rustdoc-gui/{ => src}/lib.rs | 0 src/test/rustdoc-gui/theme-change.goml | 2 +- src/test/rustdoc-gui/toggle-docs.goml | 2 +- .../rustdoc-gui/trait-sidebar-item-order.goml | 2 +- 16 files changed, 34 insertions(+), 21 deletions(-) rename src/test/rustdoc-gui/{ => src}/lib.rs (100%) diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 78163651158ed..de5eb7a2800e5 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -827,15 +827,28 @@ impl Step for RustdocGUI { } let out_dir = builder.test_out(self.target).join("rustdoc-gui"); - let mut command = builder.rustdoc_cmd(self.compiler); - command.arg("src/test/rustdoc-gui/lib.rs").arg("-o").arg(&out_dir); - builder.run(&mut command); + // We remove existing folder to be sure there won't be artifacts remaining. + let _ = fs::remove_dir_all(&out_dir); + + // We generate docs for the libraries present in the rustdoc-gui's src folder. + let libs_dir = Path::new("src/test/rustdoc-gui/src"); + for entry in libs_dir.read_dir().expect("read_dir call failed") { + let entry = entry.expect("invalid entry"); + let path = entry.path(); + if path.extension().map(|e| e == "rs").unwrap_or(false) { + let mut command = builder.rustdoc_cmd(self.compiler); + command.arg(path).arg("-o").arg(&out_dir); + builder.run(&mut command); + } + } + + // We now run GUI tests. let mut command = Command::new(&nodejs); command .arg("src/tools/rustdoc-gui/tester.js") .arg("--doc-folder") - .arg(out_dir.join("test_docs")) + .arg(out_dir) .arg("--tests-folder") .arg("src/test/rustdoc-gui"); builder.run(&mut command); diff --git a/src/test/rustdoc-gui/basic-code.goml b/src/test/rustdoc-gui/basic-code.goml index 8da465662547a..d014ed60eb039 100644 --- a/src/test/rustdoc-gui/basic-code.goml +++ b/src/test/rustdoc-gui/basic-code.goml @@ -1,3 +1,3 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html click: ".srclink" assert: (".line-numbers", 1) diff --git a/src/test/rustdoc-gui/basic.goml b/src/test/rustdoc-gui/basic.goml index ed23300860b70..44fcec3393744 100644 --- a/src/test/rustdoc-gui/basic.goml +++ b/src/test/rustdoc-gui/basic.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html assert: ("#functions") goto: ./struct.Foo.html assert: ("div.type-decl") diff --git a/src/test/rustdoc-gui/check_info_sign_position.goml b/src/test/rustdoc-gui/check_info_sign_position.goml index 9aa72a3ad53e7..d64ee0261370c 100644 --- a/src/test/rustdoc-gui/check_info_sign_position.goml +++ b/src/test/rustdoc-gui/check_info_sign_position.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html goto: ./fn.check_list_code_block.html // If the codeblock is the first element of the docblock, the information tooltip must have // have some top margin to avoid going over the toggle (the "[+]"). diff --git a/src/test/rustdoc-gui/code-sidebar-toggle.goml b/src/test/rustdoc-gui/code-sidebar-toggle.goml index 69fc860244b7b..7e7003d4340a3 100644 --- a/src/test/rustdoc-gui/code-sidebar-toggle.goml +++ b/src/test/rustdoc-gui/code-sidebar-toggle.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html click: ".srclink" click: "#sidebar-toggle" wait-for: 500 diff --git a/src/test/rustdoc-gui/hash-item-expansion.goml b/src/test/rustdoc-gui/hash-item-expansion.goml index d736d15d184a3..1248d11200e6c 100644 --- a/src/test/rustdoc-gui/hash-item-expansion.goml +++ b/src/test/rustdoc-gui/hash-item-expansion.goml @@ -1,5 +1,5 @@ // This test ensures that the element corresponding to the hash is displayed. -goto: file://|DOC_PATH|/struct.Foo.html#method.borrow +goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.borrow // In the blanket implementations list, "Borrow" is the second one, hence the ":nth(2)". assert: ("#blanket-implementations-list > details:nth-child(2)", "open", "") // Please note the "\" below is needed because otherwise ".borrow" would be interpreted as diff --git a/src/test/rustdoc-gui/impl-default-expansion.goml b/src/test/rustdoc-gui/impl-default-expansion.goml index 686d98f9736e4..3f1e7ec4a789c 100644 --- a/src/test/rustdoc-gui/impl-default-expansion.goml +++ b/src/test/rustdoc-gui/impl-default-expansion.goml @@ -1,3 +1,3 @@ // This test ensures that the impl blocks are open by default. -goto: file://|DOC_PATH|/struct.Foo.html +goto: file://|DOC_PATH|/test_docs/struct.Foo.html assert: ("#main > details.implementors-toggle", "open", "") diff --git a/src/test/rustdoc-gui/list_code_block.goml b/src/test/rustdoc-gui/list_code_block.goml index 6f2465a5587f2..7d3490e9d9410 100644 --- a/src/test/rustdoc-gui/list_code_block.goml +++ b/src/test/rustdoc-gui/list_code_block.goml @@ -1,3 +1,3 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html goto: ./fn.check_list_code_block.html assert: ("pre.rust.fn") diff --git a/src/test/rustdoc-gui/search-input-mobile.goml b/src/test/rustdoc-gui/search-input-mobile.goml index 3eec3459a6393..5c95db70aecdd 100644 --- a/src/test/rustdoc-gui/search-input-mobile.goml +++ b/src/test/rustdoc-gui/search-input-mobile.goml @@ -1,6 +1,6 @@ // Test to ensure that you can click on the search input, whatever the width. // The PR which fixed it is: https://github.com/rust-lang/rust/pull/81592 -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html size: (463, 700) // We first check that the search input isn't already focused. assert-false: ("input.search-input:focus") diff --git a/src/test/rustdoc-gui/search-tab-selection-if-current-is-empty.goml b/src/test/rustdoc-gui/search-tab-selection-if-current-is-empty.goml index a4df102d245be..c828c72e910d5 100644 --- a/src/test/rustdoc-gui/search-tab-selection-if-current-is-empty.goml +++ b/src/test/rustdoc-gui/search-tab-selection-if-current-is-empty.goml @@ -1,11 +1,11 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html write: (".search-input", "Foo") // Waiting for the search results to appear... wait-for: "#titles" assert: ("#titles > button:nth-of-type(1)", "class", "selected") // To go back to the original "state" -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html write: (".search-input", "-> String") // Waiting for the search results to appear... wait-for: "#titles" @@ -13,7 +13,7 @@ wait-for: "#titles" assert: ("#titles > button:nth-of-type(3)", "class", "selected") // To go back to the original "state" -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html write: (".search-input", "-> Something") // Waiting for the search results to appear... wait-for: "#titles" diff --git a/src/test/rustdoc-gui/shortcuts.goml b/src/test/rustdoc-gui/shortcuts.goml index c35b48f57f4d2..884c38d85fbdb 100644 --- a/src/test/rustdoc-gui/shortcuts.goml +++ b/src/test/rustdoc-gui/shortcuts.goml @@ -1,5 +1,5 @@ // Check that the various shortcuts are working. -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html // We first check that the search input isn't already focused. assert-false: "input.search-input:focus" press-key: "s" diff --git a/src/test/rustdoc-gui/source-code-page.goml b/src/test/rustdoc-gui/source-code-page.goml index f11c41e8bd552..ff33a541a1801 100644 --- a/src/test/rustdoc-gui/source-code-page.goml +++ b/src/test/rustdoc-gui/source-code-page.goml @@ -1,11 +1,11 @@ -goto: file://|DOC_PATH|/../src/test_docs/lib.rs.html +goto: file://|DOC_PATH|/src/test_docs/lib.rs.html // Check that we can click on the line number. click: (40, 224) // This is the position of the span for line 4. // Unfortunately, "#4" isn't a valid query selector, so we have to go around that limitation // by instead getting the nth span. assert: (".line-numbers > span:nth-child(4)", "class", "line-highlighted") // We now check that the good spans are highlighted -goto: file://|DOC_PATH|/../src/test_docs/lib.rs.html#4-6 +goto: file://|DOC_PATH|/src/test_docs/lib.rs.html#4-6 assert-false: (".line-numbers > span:nth-child(3)", "class", "line-highlighted") assert: (".line-numbers > span:nth-child(4)", "class", "line-highlighted") assert: (".line-numbers > span:nth-child(5)", "class", "line-highlighted") diff --git a/src/test/rustdoc-gui/lib.rs b/src/test/rustdoc-gui/src/lib.rs similarity index 100% rename from src/test/rustdoc-gui/lib.rs rename to src/test/rustdoc-gui/src/lib.rs diff --git a/src/test/rustdoc-gui/theme-change.goml b/src/test/rustdoc-gui/theme-change.goml index 5bd65f61f4905..bc9063edd1e7a 100644 --- a/src/test/rustdoc-gui/theme-change.goml +++ b/src/test/rustdoc-gui/theme-change.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html click: "#theme-picker" click: "#theme-choices > button:first-child" wait-for: 500 diff --git a/src/test/rustdoc-gui/toggle-docs.goml b/src/test/rustdoc-gui/toggle-docs.goml index 1ded33f659d3c..93bdf41a6a09e 100644 --- a/src/test/rustdoc-gui/toggle-docs.goml +++ b/src/test/rustdoc-gui/toggle-docs.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/index.html +goto: file://|DOC_PATH|/test_docs/index.html click: "#toggle-all-docs" wait-for: 5000 assert: ("#main > div.docblock.hidden-by-usual-hider") diff --git a/src/test/rustdoc-gui/trait-sidebar-item-order.goml b/src/test/rustdoc-gui/trait-sidebar-item-order.goml index 914486e1c281d..2e9f85336ecd8 100644 --- a/src/test/rustdoc-gui/trait-sidebar-item-order.goml +++ b/src/test/rustdoc-gui/trait-sidebar-item-order.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/trait.AnotherOne.html +goto: file://|DOC_PATH|/test_docs/trait.AnotherOne.html assert: (".sidebar-links a:nth-of-type(1)", "another") assert: (".sidebar-links a:nth-of-type(2)", "func1") assert: (".sidebar-links a:nth-of-type(3)", "func2") From 1b0976c42f0dc83f3d963e014d685e579a7a9b33 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 11 May 2021 20:56:07 +0200 Subject: [PATCH 2/3] Update toggle-docs GUI test to last version --- src/test/rustdoc-gui/toggle-docs.goml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/test/rustdoc-gui/toggle-docs.goml b/src/test/rustdoc-gui/toggle-docs.goml index 93bdf41a6a09e..062bc7d51e542 100644 --- a/src/test/rustdoc-gui/toggle-docs.goml +++ b/src/test/rustdoc-gui/toggle-docs.goml @@ -1,7 +1,10 @@ goto: file://|DOC_PATH|/test_docs/index.html +assert: ("#main > details.top-doc", "open", "") click: "#toggle-all-docs" -wait-for: 5000 -assert: ("#main > div.docblock.hidden-by-usual-hider") +wait-for: 1000 +// This is now collapsed so there shouldn't be the "open" attribute on details. +assert-false: ("#main > details.top-doc", "open", "") click: "#toggle-all-docs" -wait-for: 5000 -assert: ("#main > div.docblock.hidden-by-usual-hider", 0) +wait-for: 1000 +// Not collapsed anymore so the "open" attribute should be back. +assert: ("#main > details.top-doc", "open", "") From 6b9499085be274226bfc3eb2434bea4e0e90096d Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 11 May 2021 21:14:40 +0200 Subject: [PATCH 3/3] Make rustdoc-gui test suite able to run with different sub directories --- src/bootstrap/test.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index de5eb7a2800e5..0e9c561c68994 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -832,7 +832,7 @@ impl Step for RustdocGUI { let _ = fs::remove_dir_all(&out_dir); // We generate docs for the libraries present in the rustdoc-gui's src folder. - let libs_dir = Path::new("src/test/rustdoc-gui/src"); + let libs_dir = builder.build.src.join("src/test/rustdoc-gui/src"); for entry in libs_dir.read_dir().expect("read_dir call failed") { let entry = entry.expect("invalid entry"); let path = entry.path(); @@ -846,11 +846,11 @@ impl Step for RustdocGUI { // We now run GUI tests. let mut command = Command::new(&nodejs); command - .arg("src/tools/rustdoc-gui/tester.js") + .arg(builder.build.src.join("src/tools/rustdoc-gui/tester.js")) .arg("--doc-folder") .arg(out_dir) .arg("--tests-folder") - .arg("src/test/rustdoc-gui"); + .arg(builder.build.src.join("src/test/rustdoc-gui")); builder.run(&mut command); } else { builder.info("No nodejs found, skipping \"src/test/rustdoc-gui\" tests");