Rewrite test to use tempfile
We don't want to be writing to arbitrary directories, and this seems to make the test a little simpler.
This commit is contained in:
parent
3978612611
commit
2a4e5583ab
1 changed files with 17 additions and 26 deletions
|
|
@ -314,7 +314,8 @@ mod tests {
|
||||||
use crate::config::HtmlConfig;
|
use crate::config::HtmlConfig;
|
||||||
use crate::theme::Theme;
|
use crate::theme::Theme;
|
||||||
use crate::utils::fs::write_file;
|
use crate::utils::fs::write_file;
|
||||||
use std::io::Read;
|
use tempfile::TempDir;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_write_directive() {
|
fn test_write_directive() {
|
||||||
let theme = Theme {
|
let theme = Theme {
|
||||||
|
|
@ -339,40 +340,30 @@ mod tests {
|
||||||
fonts_css: None,
|
fonts_css: None,
|
||||||
font_files: Vec::new(),
|
font_files: Vec::new(),
|
||||||
};
|
};
|
||||||
let reference_js = PathBuf::from("target/static-files-test-case-reference.js");
|
let temp_dir = TempDir::with_prefix("mdbook-").unwrap();
|
||||||
let test_case = PathBuf::from("target/static-files-test-case");
|
let reference_js = Path::new("static-files-test-case-reference.js");
|
||||||
let mut html_config = HtmlConfig::default();
|
let mut html_config = HtmlConfig::default();
|
||||||
html_config.additional_js.push(reference_js.clone());
|
html_config.additional_js.push(reference_js.to_owned());
|
||||||
write_file(
|
write_file(
|
||||||
&Path::new("."),
|
temp_dir.path(),
|
||||||
&reference_js,
|
reference_js,
|
||||||
br#"{{ resource "book.js" }}"#,
|
br#"{{ resource "book.js" }}"#,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let mut static_files = StaticFiles::new(&theme, &html_config, &Path::new(".")).unwrap();
|
let mut static_files = StaticFiles::new(&theme, &html_config, temp_dir.path()).unwrap();
|
||||||
static_files.hash_files().unwrap();
|
static_files.hash_files().unwrap();
|
||||||
static_files.write_files(&test_case).unwrap();
|
static_files.write_files(temp_dir.path()).unwrap();
|
||||||
// custom JS winds up referencing book.js
|
// custom JS winds up referencing book.js
|
||||||
let mut reference_js_dest = File::open(
|
let reference_js_content = std::fs::read_to_string(
|
||||||
"target/static-files-test-case/target/static-files-test-case-reference-635c9cdc.js",
|
temp_dir
|
||||||
|
.path()
|
||||||
|
.join("static-files-test-case-reference-635c9cdc.js"),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let mut reference_js_content = Vec::new();
|
assert_eq!("book-e3b0c442.js", reference_js_content);
|
||||||
reference_js_dest
|
|
||||||
.read_to_end(&mut reference_js_content)
|
|
||||||
.unwrap();
|
|
||||||
std::mem::drop(reference_js_dest);
|
|
||||||
assert_eq!(br#"../book-e3b0c442.js"#, &reference_js_content[..]);
|
|
||||||
// book.js winds up empty
|
// book.js winds up empty
|
||||||
let mut reference_js_dest =
|
let book_js_content =
|
||||||
File::open("target/static-files-test-case/book-e3b0c442.js").unwrap();
|
std::fs::read_to_string(temp_dir.path().join("book-e3b0c442.js")).unwrap();
|
||||||
let mut reference_js_content = Vec::new();
|
assert_eq!("", book_js_content);
|
||||||
reference_js_dest
|
|
||||||
.read_to_end(&mut reference_js_content)
|
|
||||||
.unwrap();
|
|
||||||
std::mem::drop(reference_js_dest);
|
|
||||||
assert_eq!(br#""#, &reference_js_content[..]);
|
|
||||||
std::fs::remove_dir_all(&test_case).unwrap();
|
|
||||||
std::fs::remove_file(&reference_js).unwrap();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue