Merge pull request #1791 from clarkfw/master
bail! in render() if specified theme directory does not exist
This commit is contained in:
commit
5bea83114b
|
@ -481,7 +481,13 @@ impl Renderer for HtmlHandlebars {
|
||||||
let mut handlebars = Handlebars::new();
|
let mut handlebars = Handlebars::new();
|
||||||
|
|
||||||
let theme_dir = match html_config.theme {
|
let theme_dir = match html_config.theme {
|
||||||
Some(ref theme) => ctx.root.join(theme),
|
Some(ref theme) => {
|
||||||
|
let dir = ctx.root.join(theme);
|
||||||
|
if !dir.is_dir() {
|
||||||
|
bail!("theme dir {} does not exist", dir.display());
|
||||||
|
}
|
||||||
|
dir
|
||||||
|
}
|
||||||
None => ctx.root.join("theme"),
|
None => ctx.root.join("theme"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -657,6 +657,57 @@ fn summary_with_markdown_formatting() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Ensure building fails if `[output.html].theme` points to a non-existent directory
|
||||||
|
#[test]
|
||||||
|
fn failure_on_missing_theme_directory() {
|
||||||
|
// 1. Using default theme should work
|
||||||
|
let temp = DummyBook::new().build().unwrap();
|
||||||
|
let book_toml = r#"
|
||||||
|
[book]
|
||||||
|
title = "implicit"
|
||||||
|
src = "src"
|
||||||
|
"#;
|
||||||
|
|
||||||
|
write_file(temp.path(), "book.toml", book_toml.as_bytes()).unwrap();
|
||||||
|
let md = MDBook::load(temp.path()).unwrap();
|
||||||
|
let got = md.build();
|
||||||
|
assert!(got.is_ok());
|
||||||
|
|
||||||
|
// 2. Pointing to a normal directory should work
|
||||||
|
let temp = DummyBook::new().build().unwrap();
|
||||||
|
let created = fs::create_dir(temp.path().join("theme-directory"));
|
||||||
|
assert!(created.is_ok());
|
||||||
|
let book_toml = r#"
|
||||||
|
[book]
|
||||||
|
title = "implicit"
|
||||||
|
src = "src"
|
||||||
|
|
||||||
|
[output.html]
|
||||||
|
theme = "./theme-directory"
|
||||||
|
"#;
|
||||||
|
|
||||||
|
write_file(temp.path(), "book.toml", book_toml.as_bytes()).unwrap();
|
||||||
|
let md = MDBook::load(temp.path()).unwrap();
|
||||||
|
let got = md.build();
|
||||||
|
assert!(got.is_ok());
|
||||||
|
|
||||||
|
// 3. Pointing to a non-existent directory should fail
|
||||||
|
let temp = DummyBook::new().build().unwrap();
|
||||||
|
let book_toml = r#"
|
||||||
|
[book]
|
||||||
|
title = "implicit"
|
||||||
|
src = "src"
|
||||||
|
|
||||||
|
[output.html]
|
||||||
|
theme = "./non-existent-directory"
|
||||||
|
"#;
|
||||||
|
|
||||||
|
write_file(temp.path(), "book.toml", book_toml.as_bytes()).unwrap();
|
||||||
|
let md = MDBook::load(temp.path()).unwrap();
|
||||||
|
let got = md.build();
|
||||||
|
assert!(got.is_err());
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "search")]
|
#[cfg(feature = "search")]
|
||||||
mod search {
|
mod search {
|
||||||
use crate::dummy_book::DummyBook;
|
use crate::dummy_book::DummyBook;
|
||||||
|
|
Loading…
Reference in New Issue