]> git.proxmox.com Git - rustc.git/blame - vendor/mdbook/tests/init.rs
New upstream version 1.37.0+dfsg1
[rustc.git] / vendor / mdbook / tests / init.rs
CommitLineData
2c00a5a8 1use mdbook::config::Config;
9fa01778
XL
2use mdbook::MDBook;
3use std::fs;
dc9dc135
XL
4use std::fs::File;
5use std::io::prelude::*;
9fa01778 6use std::path::PathBuf;
83c7162d 7use tempfile::Builder as TempFileBuilder;
ea8adc8c 8
ea8adc8c
XL
9/// Run `mdbook init` in an empty directory and make sure the default files
10/// are created.
11#[test]
12fn base_mdbook_init_should_create_default_content() {
13 let created_files = vec!["book", "src", "src/SUMMARY.md", "src/chapter_1.md"];
14
83c7162d 15 let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
ea8adc8c
XL
16 for file in &created_files {
17 assert!(!temp.path().join(file).exists());
18 }
19
2c00a5a8 20 MDBook::init(temp.path()).build().unwrap();
ea8adc8c
XL
21
22 for file in &created_files {
2c00a5a8
XL
23 let target = temp.path().join(file);
24 println!("{}", target.display());
25 assert!(target.exists(), "{} doesn't exist", file);
ea8adc8c
XL
26 }
27}
28
dc9dc135
XL
29/// Run `mdbook init` in a directory containing a SUMMARY.md should create the
30/// files listed in the summary.
31#[test]
32fn run_mdbook_init_should_create_content_from_summary() {
33 let created_files = vec!["intro.md", "first.md", "outro.md"];
34
35 let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
36 let src_dir = temp.path().join("src");
37 fs::create_dir_all(src_dir.clone()).unwrap();
38 static SUMMARY: &str = r#"# Summary
39
40[intro](intro.md)
41
42- [First chapter](first.md)
43
44[outro](outro.md)
45
46"#;
47
48 let mut summary = File::create(src_dir.join("SUMMARY.md")).unwrap();
49 summary.write_all(SUMMARY.as_bytes()).unwrap();
50 MDBook::init(temp.path()).build().unwrap();
51
52 for file in &created_files {
53 let target = src_dir.join(file);
54 println!("{}", target.display());
55 assert!(target.exists(), "{} doesn't exist", file);
56 }
57}
58
ea8adc8c
XL
59/// Set some custom arguments for where to place the source and destination
60/// files, then call `mdbook init`.
61#[test]
62fn run_mdbook_init_with_custom_book_and_src_locations() {
63 let created_files = vec!["out", "in", "in/SUMMARY.md", "in/chapter_1.md"];
64
83c7162d 65 let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
ea8adc8c 66 for file in &created_files {
2c00a5a8
XL
67 assert!(
68 !temp.path().join(file).exists(),
69 "{} shouldn't exist yet!",
70 file
71 );
ea8adc8c
XL
72 }
73
2c00a5a8
XL
74 let mut cfg = Config::default();
75 cfg.book.src = PathBuf::from("in");
76 cfg.build.build_dir = PathBuf::from("out");
ea8adc8c 77
2c00a5a8 78 MDBook::init(temp.path()).with_config(cfg).build().unwrap();
ea8adc8c
XL
79
80 for file in &created_files {
2c00a5a8
XL
81 let target = temp.path().join(file);
82 assert!(
83 target.exists(),
84 "{} should have been created by `mdbook init`",
85 file
86 );
ea8adc8c
XL
87 }
88}
2c00a5a8
XL
89
90#[test]
91fn book_toml_isnt_required() {
83c7162d 92 let temp = TempFileBuilder::new().prefix("mdbook").tempdir().unwrap();
2c00a5a8
XL
93 let md = MDBook::init(temp.path()).build().unwrap();
94
95 let _ = fs::remove_file(temp.path().join("book.toml"));
96
97 md.build().unwrap();
98}