]>
Commit | Line | Data |
---|---|---|
2c00a5a8 | 1 | use mdbook::config::Config; |
9fa01778 XL |
2 | use mdbook::MDBook; |
3 | use std::fs; | |
dc9dc135 XL |
4 | use std::fs::File; |
5 | use std::io::prelude::*; | |
9fa01778 | 6 | use std::path::PathBuf; |
83c7162d | 7 | use 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] | |
12 | fn 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] | |
32 | fn 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] | |
62 | fn 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] | |
91 | fn 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 | } |