diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:20:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:20:29 +0000 |
commit | 631cd5845e8de329d0e227aaa707d7ea228b8f8f (patch) | |
tree | a1b87c8f8cad01cf18f7c5f57a08f102771ed303 /vendor/mdbook/tests/rendered_output.rs | |
parent | Adding debian version 1.69.0+dfsg1-1. (diff) | |
download | rustc-631cd5845e8de329d0e227aaa707d7ea228b8f8f.tar.xz rustc-631cd5845e8de329d0e227aaa707d7ea228b8f8f.zip |
Merging upstream version 1.70.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/mdbook/tests/rendered_output.rs')
-rw-r--r-- | vendor/mdbook/tests/rendered_output.rs | 112 |
1 files changed, 109 insertions, 3 deletions
diff --git a/vendor/mdbook/tests/rendered_output.rs b/vendor/mdbook/tests/rendered_output.rs index 9750a35e2..a279c4f8e 100644 --- a/vendor/mdbook/tests/rendered_output.rs +++ b/vendor/mdbook/tests/rendered_output.rs @@ -1,6 +1,3 @@ -#[macro_use] -extern crate pretty_assertions; - mod dummy_book; use crate::dummy_book::{assert_contains_strings, assert_doesnt_contain_strings, DummyBook}; @@ -10,6 +7,7 @@ use mdbook::config::Config; use mdbook::errors::*; use mdbook::utils::fs::write_file; use mdbook::MDBook; +use pretty_assertions::assert_eq; use select::document::Document; use select::predicate::{Class, Name, Predicate}; use std::collections::HashMap; @@ -842,3 +840,111 @@ mod search { } } } + +#[test] +fn custom_fonts() { + // Tests to ensure custom fonts are copied as expected. + let builtin_fonts = [ + "OPEN-SANS-LICENSE.txt", + "SOURCE-CODE-PRO-LICENSE.txt", + "fonts.css", + "open-sans-v17-all-charsets-300.woff2", + "open-sans-v17-all-charsets-300italic.woff2", + "open-sans-v17-all-charsets-600.woff2", + "open-sans-v17-all-charsets-600italic.woff2", + "open-sans-v17-all-charsets-700.woff2", + "open-sans-v17-all-charsets-700italic.woff2", + "open-sans-v17-all-charsets-800.woff2", + "open-sans-v17-all-charsets-800italic.woff2", + "open-sans-v17-all-charsets-italic.woff2", + "open-sans-v17-all-charsets-regular.woff2", + "source-code-pro-v11-all-charsets-500.woff2", + ]; + let actual_files = |path: &Path| -> Vec<String> { + let mut actual: Vec<_> = path + .read_dir() + .unwrap() + .map(|entry| entry.unwrap().file_name().into_string().unwrap()) + .collect(); + actual.sort(); + actual + }; + let has_fonts_css = |path: &Path| -> bool { + let contents = fs::read_to_string(path.join("book/index.html")).unwrap(); + contents.contains("fonts/fonts.css") + }; + + // No theme: + let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); + let p = temp.path(); + MDBook::init(p).build().unwrap(); + MDBook::load(p).unwrap().build().unwrap(); + assert_eq!(actual_files(&p.join("book/fonts")), &builtin_fonts); + assert!(has_fonts_css(p)); + + // Full theme. + let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); + let p = temp.path(); + MDBook::init(p).copy_theme(true).build().unwrap(); + assert_eq!(actual_files(&p.join("theme/fonts")), &builtin_fonts); + MDBook::load(p).unwrap().build().unwrap(); + assert_eq!(actual_files(&p.join("book/fonts")), &builtin_fonts); + assert!(has_fonts_css(p)); + + // Mixed with copy_fonts=true + // This should generate a deprecation warning. + let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); + let p = temp.path(); + MDBook::init(p).build().unwrap(); + write_file(&p.join("theme/fonts"), "fonts.css", b"/*custom*/").unwrap(); + write_file(&p.join("theme/fonts"), "myfont.woff", b"").unwrap(); + MDBook::load(p).unwrap().build().unwrap(); + assert!(has_fonts_css(p)); + let mut expected = Vec::from(builtin_fonts); + expected.push("myfont.woff"); + expected.sort(); + assert_eq!(actual_files(&p.join("book/fonts")), expected.as_slice()); + + // copy-fonts=false, no theme + // This should generate a deprecation warning. + let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); + let p = temp.path(); + MDBook::init(p).build().unwrap(); + let config = Config::from_str("output.html.copy-fonts = false").unwrap(); + MDBook::load_with_config(p, config) + .unwrap() + .build() + .unwrap(); + assert!(!has_fonts_css(p)); + assert!(!p.join("book/fonts").exists()); + + // copy-fonts=false with empty fonts.css + let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); + let p = temp.path(); + MDBook::init(p).build().unwrap(); + write_file(&p.join("theme/fonts"), "fonts.css", b"").unwrap(); + let config = Config::from_str("output.html.copy-fonts = false").unwrap(); + MDBook::load_with_config(p, config) + .unwrap() + .build() + .unwrap(); + assert!(!has_fonts_css(p)); + assert!(!p.join("book/fonts").exists()); + + // copy-fonts=false with fonts theme + let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap(); + let p = temp.path(); + MDBook::init(p).build().unwrap(); + write_file(&p.join("theme/fonts"), "fonts.css", b"/*custom*/").unwrap(); + write_file(&p.join("theme/fonts"), "myfont.woff", b"").unwrap(); + let config = Config::from_str("output.html.copy-fonts = false").unwrap(); + MDBook::load_with_config(p, config) + .unwrap() + .build() + .unwrap(); + assert!(has_fonts_css(p)); + assert_eq!( + actual_files(&p.join("book/fonts")), + &["fonts.css", "myfont.woff"] + ); +} |