diff --git a/crates/mdbook-html/src/html/tree.rs b/crates/mdbook-html/src/html/tree.rs index 5a0786ea38..4184740d09 100644 --- a/crates/mdbook-html/src/html/tree.rs +++ b/crates/mdbook-html/src/html/tree.rs @@ -977,19 +977,29 @@ where new_classes += class; } } + if icon.is_empty() { + continue; + } - if !icon.is_empty() - && let Ok(svg) = fa::svg(type_, &icon) - { - let mut span = Element::new("span"); - span.insert_attr("class", new_classes.into()); - for (name, value) in &i_el.attrs { - if *name != attr_qual_name!("class") { - span.attrs.insert(name.clone(), value.clone()); + match fa::svg(type_, &icon) { + Ok(svg) => { + let mut span = Element::new("span"); + span.insert_attr("class", new_classes.into()); + for (name, value) in &i_el.attrs { + if *name != attr_qual_name!("class") { + span.attrs.insert(name.clone(), value.clone()); + } } + *node.value() = Node::Element(span); + node.append(Node::RawData(svg.into())); + } + Err(e) => { + warn!( + "failed to find Font Awesome icon for icon `{icon}` \ + with type `{type_}` in `{}`: {e}", + self.options.path.display() + ); } - *node.value() = Node::Element(span); - node.append(Node::RawData(svg.into())); } } } diff --git a/tests/testsuite/rendering.rs b/tests/testsuite/rendering.rs index 1f8590ad33..7f2fffa92a 100644 --- a/tests/testsuite/rendering.rs +++ b/tests/testsuite/rendering.rs @@ -47,7 +47,17 @@ fn first_chapter_is_copied_as_index_even_if_not_first_elem() { // Fontawesome `` tag support. #[test] fn fontawesome() { - BookTest::from_dir("rendering/fontawesome").check_all_main_files(); + BookTest::from_dir("rendering/fontawesome") + .run("build", |cmd| { + cmd.expect_stderr(str![[r#" + INFO Book building has started + INFO Running the html backend + WARN failed to find Font Awesome icon for icon `does-not-exist` with type `regular` in `fa.md`: Invalid Font Awesome icon name: visit https://fontawesome.com/icons?d=gallery&m=free to see valid names + INFO HTML book written to `[ROOT]/book` + +"#]]); + }) + .check_all_main_files(); } // Tests the rendering when setting the default rust edition. diff --git a/tests/testsuite/rendering/fontawesome/expected/fa.html b/tests/testsuite/rendering/fontawesome/expected/fa.html index a5cf5bf5ad..a2f9d4236e 100644 --- a/tests/testsuite/rendering/fontawesome/expected/fa.html +++ b/tests/testsuite/rendering/fontawesome/expected/fa.html @@ -2,4 +2,5 @@

Chapter 1

-

Some text here.

\ No newline at end of file +

Text prevents translation.

+

\ No newline at end of file diff --git a/tests/testsuite/rendering/fontawesome/src/fa.md b/tests/testsuite/rendering/fontawesome/src/fa.md index 7605f9465c..2f934da18d 100644 --- a/tests/testsuite/rendering/fontawesome/src/fa.md +++ b/tests/testsuite/rendering/fontawesome/src/fa.md @@ -6,4 +6,6 @@ -Some text here. +Text prevents translation. + +