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 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
|
||||
/// files listed in the summary.
|
||||
#[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 includes;
|
||||
mod index;
|
||||
mod init;
|
||||
|
||||
mod prelude {
|
||||
pub use crate::book_test::BookTest;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue