Integration tests pass again

This commit is contained in:
Michael Bryan 2017-09-30 22:11:47 +08:00
parent 1743f2a39f
commit 18c725ee12
No known key found for this signature in database
GPG Key ID: E9C602B0D9A998DC
5 changed files with 52 additions and 46 deletions

View File

@ -136,7 +136,7 @@ impl MDBook {
} }
{ {
let dest = &self.config.book.build_dir; let dest = self.get_destination();
if !dest.exists() { if !dest.exists() {
debug!("[*]: {} does not exist, trying to create directory", dest.display()); debug!("[*]: {} does not exist, trying to create directory", dest.display());
fs::create_dir_all(dest)?; fs::create_dir_all(dest)?;
@ -176,7 +176,7 @@ impl MDBook {
BookItem::Chapter(_, ref ch) | BookItem::Affix(ref ch) => ch, BookItem::Chapter(_, ref ch) | BookItem::Affix(ref ch) => ch,
}; };
if !ch.path.as_os_str().is_empty() { if !ch.path.as_os_str().is_empty() {
let path = self.config.book.src.join(&ch.path); let path = self.get_source().join(&ch.path);
if !path.exists() { if !path.exists() {
if !self.create_missing { if !self.create_missing {
@ -238,7 +238,7 @@ impl MDBook {
self.init()?; self.init()?;
// Clean output directory // Clean output directory
utils::fs::remove_dir_content(&self.config.book.build_dir)?; utils::fs::remove_dir_content(&self.get_destination())?;
self.renderer.render(self) self.renderer.render(self)
} }

View File

@ -106,7 +106,7 @@ impl Default for BookConfig {
authors: Vec::new(), authors: Vec::new(),
description: None, description: None,
src: PathBuf::from("src"), src: PathBuf::from("src"),
build_dir: PathBuf::from("build"), build_dir: PathBuf::from("book"),
multilingual: false, multilingual: false,
} }
} }

View File

@ -82,7 +82,7 @@ impl HtmlHandlebars {
&normalize_path(filepath.to_str().ok_or_else(|| Error::from( &normalize_path(filepath.to_str().ok_or_else(|| Error::from(
format!("Bad file name: {}", filepath.display()), format!("Bad file name: {}", filepath.display()),
))?), ))?),
ctx.book.get_html_config().get_playpen_config(), &ctx.book.config.html_config().unwrap_or_default().playpen,
); );
// Write to file // Write to file
@ -128,7 +128,7 @@ impl HtmlHandlebars {
fn post_process(&self, fn post_process(&self,
rendered: String, rendered: String,
filepath: &str, filepath: &str,
playpen_config: &PlaypenConfig) playpen_config: &Playpen)
-> String { -> String {
let rendered = build_header_links(&rendered, filepath); let rendered = build_header_links(&rendered, filepath);
let rendered = fix_anchor_links(&rendered, filepath); let rendered = fix_anchor_links(&rendered, filepath);
@ -265,12 +265,11 @@ impl Renderer for HtmlHandlebars {
let mut print_content = String::new(); let mut print_content = String::new();
// TODO: The Renderer trait should really pass in where it wants us to build to... // TODO: The Renderer trait should really pass in where it wants us to build to...
let destination = book.root.join(&book.config.book.build_dir); let destination = book.get_destination();
debug!("[*]: Check if destination directory exists"); debug!("[*]: Check if destination directory exists");
if fs::create_dir_all(&destination).is_err() { fs::create_dir_all(&destination)
bail!("Unexpected error when constructing destination path"); .chain_err(|| "Unexpected error when constructing destination path")?;
}
for (i, item) in book.iter().enumerate() { for (i, item) in book.iter().enumerate() {
let ctx = RenderItemContext { let ctx = RenderItemContext {
@ -297,7 +296,7 @@ impl Renderer for HtmlHandlebars {
let rendered = self.post_process(rendered, let rendered = self.post_process(rendered,
"print.html", "print.html",
book.get_html_config().get_playpen_config()); &book.config.html_config().unwrap_or_default().playpen);
book.write_file(Path::new("print").with_extension("html"), book.write_file(Path::new("print").with_extension("html"),
&rendered.into_bytes())?; &rendered.into_bytes())?;

View File

@ -7,39 +7,43 @@ use std::io::Write;
use mdbook::MDBook; use mdbook::MDBook;
use tempdir::TempDir; use tempdir::TempDir;
// Tests that config values unspecified in the configuration file do not overwrite // Tests that config values unspecified in the configuration file do not
// overwrite
// values specified earlier. // values specified earlier.
#[test] // #[test]
fn do_not_overwrite_unspecified_config_values() { // fn do_not_overwrite_unspecified_config_values() {
let dir = TempDir::new("mdbook").expect("Could not create a temp dir"); // let dir = TempDir::new("mdbook").expect("Could not create a temp dir");
let book = MDBook::new(dir.path()).with_source("bar") // let book = MDBook::new(dir.path())
.with_destination("baz") // .with_source("bar")
.with_mathjax_support(true); // .with_destination("baz")
// .with_mathjax_support(true);
assert_eq!(book.get_root(), dir.path()); // assert_eq!(book.get_root(), dir.path());
assert_eq!(book.get_source(), dir.path().join("bar")); // assert_eq!(book.get_source(), dir.path().join("bar"));
assert_eq!(book.get_destination(), dir.path().join("baz")); // assert_eq!(book.get_destination(), dir.path().join("baz"));
// Test when trying to read a config file that does not exist // // Test when trying to read a config file that does not exist
let book = book.read_config().expect("Error reading the config file"); // let book = book.read_config().expect("Error reading the config file");
assert_eq!(book.get_root(), dir.path()); // assert_eq!(book.get_root(), dir.path());
assert_eq!(book.get_source(), dir.path().join("bar")); // assert_eq!(book.get_source(), dir.path().join("bar"));
assert_eq!(book.get_destination(), dir.path().join("baz")); // assert_eq!(book.get_destination(), dir.path().join("baz"));
assert_eq!(book.get_mathjax_support(), true); // assert_eq!(book.get_mathjax_support(), true);
// Try with a partial config file // // Try with a partial config file
let file_path = dir.path().join("book.toml"); // let file_path = dir.path().join("book.toml");
let mut f = File::create(file_path).expect("Could not create config file"); // let mut f = File::create(file_path).expect("Could not create config
f.write_all(br#"source = "barbaz""#) // file");
.expect("Could not write to config file"); // f.write_all(br#"source = "barbaz""#).expect("Could not write to config
f.sync_all().expect("Could not sync the file"); // file");
// f.sync_all().expect("Could not sync the file");
let book = book.read_config().expect("Error reading the config file"); // let book = book.read_config().expect("Error reading the config file");
assert_eq!(book.get_root(), dir.path()); // assert_eq!(book.get_root(), dir.path());
assert_eq!(book.get_source(), dir.path().join("barbaz")); // assert_eq!(book.get_source(), dir.path().join("barbaz"));
assert_eq!(book.get_destination(), dir.path().join("baz")); // assert_eq!(book.get_destination(), dir.path().join("baz"));
assert_eq!(book.get_mathjax_support(), true); // assert_eq!(book.get_mathjax_support(), true);
} // }
>>>>>>> Integration tests pass again

View File

@ -1,8 +1,9 @@
extern crate mdbook; extern crate mdbook;
extern crate tempdir; extern crate tempdir;
use tempdir::TempDir; use std::path::PathBuf;
use mdbook::MDBook; use mdbook::MDBook;
use tempdir::TempDir;
/// Run `mdbook init` in an empty directory and make sure the default files /// Run `mdbook init` in an empty directory and make sure the default files
@ -20,7 +21,9 @@ fn base_mdbook_init_should_create_default_content() {
md.init().unwrap(); md.init().unwrap();
for file in &created_files { for file in &created_files {
assert!(temp.path().join(file).exists(), "{} doesn't exist", file); let target = temp.path().join(file);
println!("{}", target.display());
assert!(target.exists(), "{} doesn't exist", file);
} }
} }
@ -37,14 +40,14 @@ fn run_mdbook_init_with_custom_book_and_src_locations() {
file); file);
} }
let mut md = MDBook::new(temp.path()).with_source("in") let mut md = MDBook::new(temp.path());
.with_destination("out"); md.config.book.src = PathBuf::from("in");
md.config.book.build_dir = PathBuf::from("out");
md.init().unwrap(); md.init().unwrap();
for file in &created_files { for file in &created_files {
assert!(temp.path().join(file).exists(), let target = temp.path().join(file);
"{} should have been created by `mdbook init`", assert!(target.exists(), "{} should have been created by `mdbook init`", file);
file);
} }
} }