Migrate base_mdbook_init_should_create_default_content to BookTest
This commit is contained in:
parent
c6d9f15cba
commit
6fdd7b4a17
3 changed files with 74 additions and 26 deletions
|
|
@ -7,32 +7,6 @@ use std::io::prelude::*;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use tempfile::Builder as TempFileBuilder;
|
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());
|
|
||||||
}
|
|
||||||
|
|
||||||
MDBook::init(temp.path()).build().unwrap();
|
|
||||||
|
|
||||||
for file in &created_files {
|
|
||||||
let target = temp.path().join(file);
|
|
||||||
println!("{}", target.display());
|
|
||||||
assert!(target.exists(), "{file} doesn't exist");
|
|
||||||
}
|
|
||||||
|
|
||||||
let contents = fs::read_to_string(temp.path().join("book.toml")).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
contents,
|
|
||||||
"[book]\nauthors = []\nlanguage = \"en\"\nsrc = \"src\"\n"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Run `mdbook init` in a directory containing a SUMMARY.md should create the
|
/// Run `mdbook init` in a directory containing a SUMMARY.md should create the
|
||||||
/// files listed in the summary.
|
/// files listed in the summary.
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
73
tests/testsuite/init.rs
Normal file
73
tests/testsuite/init.rs
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
//! Tests for `mdbook init`.
|
||||||
|
|
||||||
|
use crate::prelude::*;
|
||||||
|
use mdbook::MDBook;
|
||||||
|
|
||||||
|
// Tests "init" with no args.
|
||||||
|
#[test]
|
||||||
|
fn basic_init() {
|
||||||
|
let mut test = BookTest::empty();
|
||||||
|
test.run("init", |cmd| {
|
||||||
|
cmd.expect_stdout(str![[r#"
|
||||||
|
|
||||||
|
Do you want a .gitignore to be created? (y/n)
|
||||||
|
What title would you like to give the book?
|
||||||
|
|
||||||
|
All done, no errors...
|
||||||
|
|
||||||
|
"#]])
|
||||||
|
.expect_stderr(str![[r#"
|
||||||
|
[TIMESTAMP] [INFO] (mdbook::book::init): Creating a new book with stub content
|
||||||
|
|
||||||
|
"#]]);
|
||||||
|
})
|
||||||
|
.check_file(
|
||||||
|
"book.toml",
|
||||||
|
str![[r#"
|
||||||
|
[book]
|
||||||
|
authors = []
|
||||||
|
language = "en"
|
||||||
|
src = "src"
|
||||||
|
|
||||||
|
"#]],
|
||||||
|
)
|
||||||
|
.check_file(
|
||||||
|
"src/SUMMARY.md",
|
||||||
|
str
|
||||||
|
|
||||||
|
"#]],
|
||||||
|
)
|
||||||
|
.check_file(
|
||||||
|
"src/chapter_1.md",
|
||||||
|
str![[r#"
|
||||||
|
# Chapter 1
|
||||||
|
|
||||||
|
"#]],
|
||||||
|
)
|
||||||
|
.check_main_file(
|
||||||
|
"book/chapter_1.html",
|
||||||
|
str![[r##"<h1 id="chapter-1"><a class="header" href="#chapter-1">Chapter 1</a></h1>"##]],
|
||||||
|
);
|
||||||
|
assert!(!test.dir.join(".gitignore").exists());
|
||||||
|
assert!(test.dir.join("book").exists());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test init via API. This does a little less than the CLI does.
|
||||||
|
#[test]
|
||||||
|
fn init_api() {
|
||||||
|
let mut test = BookTest::empty();
|
||||||
|
MDBook::init(&test.dir).build().unwrap();
|
||||||
|
test.check_file_list(
|
||||||
|
".",
|
||||||
|
str![[r#"
|
||||||
|
book
|
||||||
|
book.toml
|
||||||
|
src
|
||||||
|
src/SUMMARY.md
|
||||||
|
src/chapter_1.md
|
||||||
|
"#]],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@ mod build;
|
||||||
mod cli;
|
mod cli;
|
||||||
mod includes;
|
mod includes;
|
||||||
mod index;
|
mod index;
|
||||||
|
mod init;
|
||||||
|
|
||||||
mod prelude {
|
mod prelude {
|
||||||
pub use crate::book_test::BookTest;
|
pub use crate::book_test::BookTest;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue