From 8bfa6462f8a2095c2f86d754af83265084261caf Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Tue, 22 Apr 2025 09:04:55 -0700 Subject: [PATCH] Migrate can_disable_individual_chapters to BookTest --- tests/rendered_output.rs | 38 ------------------- tests/testsuite/search.rs | 18 +++++++++ .../search/disable_search_chapter/book.toml | 6 +++ .../disable_search_chapter/src/SUMMARY.md | 6 +++ .../src/first/disable_me.md | 1 + .../src/first/keep_me.md | 1 + .../disable_search_chapter/src/second.md | 1 + .../src/second/nested.md | 1 + 8 files changed, 34 insertions(+), 38 deletions(-) create mode 100644 tests/testsuite/search/disable_search_chapter/book.toml create mode 100644 tests/testsuite/search/disable_search_chapter/src/SUMMARY.md create mode 100644 tests/testsuite/search/disable_search_chapter/src/first/disable_me.md create mode 100644 tests/testsuite/search/disable_search_chapter/src/first/keep_me.md create mode 100644 tests/testsuite/search/disable_search_chapter/src/second.md create mode 100644 tests/testsuite/search/disable_search_chapter/src/second/nested.md diff --git a/tests/rendered_output.rs b/tests/rendered_output.rs index b19a43a0..467a4d4a 100644 --- a/tests/rendered_output.rs +++ b/tests/rendered_output.rs @@ -381,44 +381,6 @@ mod search { use crate::dummy_book::DummyBook; use mdbook::utils::fs::write_file; use mdbook::MDBook; - use std::fs; - use std::path::Path; - - fn read_book_index(root: &Path) -> serde_json::Value { - let index = root.join("book/searchindex.js"); - let index = fs::read_to_string(index).unwrap(); - let index = index.trim_start_matches("window.search = JSON.parse('"); - let index = index.trim_end_matches("');"); - // We need unescape the string as it's supposed to be an escaped JS string. - serde_json::from_str(&index.replace("\\'", "'").replace("\\\\", "\\")).unwrap() - } - - #[test] - fn can_disable_individual_chapters() { - let temp = DummyBook::new().build().unwrap(); - let book_toml = r#" - [book] - title = "Search Test" - - [output.html.search.chapter] - "second" = { enable = false } - "first/unicode.md" = { enable = false } - "#; - write_file(temp.path(), "book.toml", book_toml.as_bytes()).unwrap(); - let md = MDBook::load(temp.path()).unwrap(); - md.build().unwrap(); - let index = read_book_index(temp.path()); - let doc_urls = index["doc_urls"].as_array().unwrap(); - let contains = |path| { - doc_urls - .iter() - .any(|p| p.as_str().unwrap().starts_with(path)) - }; - assert!(contains("second.html")); - assert!(!contains("second/")); - assert!(!contains("first/unicode.html")); - assert!(contains("first/markdown.html")); - } #[test] fn chapter_settings_validation_error() { diff --git a/tests/testsuite/search.rs b/tests/testsuite/search.rs index 244532e1..4e19f134 100644 --- a/tests/testsuite/search.rs +++ b/tests/testsuite/search.rs @@ -86,3 +86,21 @@ fn search_index_hasnt_changed_accidentally() { file!["search/reasonable_search_index/expected_index.js"], ); } + +// Ability to disable search chapters. +#[test] +fn can_disable_individual_chapters() { + let mut test = BookTest::from_dir("search/disable_search_chapter"); + test.build(); + let index = read_book_index(&test.dir); + let doc_urls = index["doc_urls"].as_array().unwrap(); + let contains = |path| { + doc_urls + .iter() + .any(|p| p.as_str().unwrap().starts_with(path)) + }; + assert!(contains("second.html")); + assert!(!contains("second/")); + assert!(!contains("first/disable_me.html")); + assert!(contains("first/keep_me.html")); +} diff --git a/tests/testsuite/search/disable_search_chapter/book.toml b/tests/testsuite/search/disable_search_chapter/book.toml new file mode 100644 index 00000000..318a39a5 --- /dev/null +++ b/tests/testsuite/search/disable_search_chapter/book.toml @@ -0,0 +1,6 @@ +[book] +title = "disable_search_chapter" + +[output.html.search.chapter] +"second" = { enable = false } +"first/disable_me.md" = { enable = false } diff --git a/tests/testsuite/search/disable_search_chapter/src/SUMMARY.md b/tests/testsuite/search/disable_search_chapter/src/SUMMARY.md new file mode 100644 index 00000000..8f7d7e80 --- /dev/null +++ b/tests/testsuite/search/disable_search_chapter/src/SUMMARY.md @@ -0,0 +1,6 @@ +# Summary + +- [Keep Me](first/keep_me.md) +- [Disable Me](first/disable_me.md) +- [Second](second.md) + - [Second Nested](second/nested.md) diff --git a/tests/testsuite/search/disable_search_chapter/src/first/disable_me.md b/tests/testsuite/search/disable_search_chapter/src/first/disable_me.md new file mode 100644 index 00000000..a3e32719 --- /dev/null +++ b/tests/testsuite/search/disable_search_chapter/src/first/disable_me.md @@ -0,0 +1 @@ +# Disable Me diff --git a/tests/testsuite/search/disable_search_chapter/src/first/keep_me.md b/tests/testsuite/search/disable_search_chapter/src/first/keep_me.md new file mode 100644 index 00000000..b9b18ac1 --- /dev/null +++ b/tests/testsuite/search/disable_search_chapter/src/first/keep_me.md @@ -0,0 +1 @@ +# Keep Me diff --git a/tests/testsuite/search/disable_search_chapter/src/second.md b/tests/testsuite/search/disable_search_chapter/src/second.md new file mode 100644 index 00000000..64e2582b --- /dev/null +++ b/tests/testsuite/search/disable_search_chapter/src/second.md @@ -0,0 +1 @@ +# Second diff --git a/tests/testsuite/search/disable_search_chapter/src/second/nested.md b/tests/testsuite/search/disable_search_chapter/src/second/nested.md new file mode 100644 index 00000000..b06e47b4 --- /dev/null +++ b/tests/testsuite/search/disable_search_chapter/src/second/nested.md @@ -0,0 +1 @@ +# Second Nested