mdBook/tests/init.rs

99 lines
2.8 KiB
Rust
Raw Permalink Normal View History

use mdbook::config::Config;
2018-07-24 01:45:01 +08:00
use mdbook::MDBook;
use std::fs;
use std::fs::File;
use std::io::prelude::*;
2018-07-24 01:45:01 +08:00
use std::path::PathBuf;
use tempfile::Builder as TempFileBuilder;
/// Run `mdbook init` in an empty directory and make sure the default files
/// are created.
#[test]
fn base_mdbook_init_should_create_default_content() {
let created_files = vec!["book", "src", "src/SUMMARY.md", "src/chapter_1.md"];
let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
for file in &created_files {
assert!(!temp.path().join(file).exists());
}
2017-11-18 22:07:08 +08:00
MDBook::init(temp.path()).build().unwrap();
for file in &created_files {
2017-09-30 22:11:47 +08:00
let target = temp.path().join(file);
println!("{}", target.display());
assert!(target.exists(), "{} doesn't exist", file);
}
}
2017-07-10 18:23:51 +08:00
/// Run `mdbook init` in a directory containing a SUMMARY.md should create the
/// files listed in the summary.
#[test]
fn run_mdbook_init_should_create_content_from_summary() {
let created_files = vec!["intro.md", "first.md", "outro.md"];
let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
let src_dir = temp.path().join("src");
fs::create_dir_all(src_dir.clone()).unwrap();
static SUMMARY: &str = r#"# Summary
[intro](intro.md)
- [First chapter](first.md)
[outro](outro.md)
"#;
let mut summary = File::create(src_dir.join("SUMMARY.md")).unwrap();
summary.write_all(SUMMARY.as_bytes()).unwrap();
MDBook::init(temp.path()).build().unwrap();
for file in &created_files {
let target = src_dir.join(file);
println!("{}", target.display());
assert!(target.exists(), "{} doesn't exist", file);
}
}
/// Set some custom arguments for where to place the source and destination
/// files, then call `mdbook init`.
2017-07-10 18:23:51 +08:00
#[test]
fn run_mdbook_init_with_custom_book_and_src_locations() {
2017-07-10 18:23:51 +08:00
let created_files = vec!["out", "in", "in/SUMMARY.md", "in/chapter_1.md"];
let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
2017-07-10 18:23:51 +08:00
for file in &created_files {
assert!(
!temp.path().join(file).exists(),
"{} shouldn't exist yet!",
file
);
2017-07-10 18:23:51 +08:00
}
let mut cfg = Config::default();
cfg.book.src = PathBuf::from("in");
cfg.build.build_dir = PathBuf::from("out");
2017-07-10 18:23:51 +08:00
2017-11-18 22:16:35 +08:00
MDBook::init(temp.path()).with_config(cfg).build().unwrap();
2017-07-10 18:23:51 +08:00
for file in &created_files {
2017-09-30 22:11:47 +08:00
let target = temp.path().join(file);
assert!(
target.exists(),
"{} should have been created by `mdbook init`",
file
);
2017-07-10 18:23:51 +08:00
}
}
#[test]
fn book_toml_isnt_required() {
let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
let md = MDBook::init(temp.path()).build().unwrap();
let _ = fs::remove_file(temp.path().join("book.toml"));
md.build().unwrap();
}