Skip to content

Commit 2a4e558

Browse files
committed
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.
1 parent 3978612 commit 2a4e558

File tree

1 file changed

+17
-26
lines changed

1 file changed

+17
-26
lines changed

src/renderer/html_handlebars/static_files.rs

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,8 @@ mod tests {
314314
use crate::config::HtmlConfig;
315315
use crate::theme::Theme;
316316
use crate::utils::fs::write_file;
317-
use std::io::Read;
317+
use tempfile::TempDir;
318+
318319
#[test]
319320
fn test_write_directive() {
320321
let theme = Theme {
@@ -339,40 +340,30 @@ mod tests {
339340
fonts_css: None,
340341
font_files: Vec::new(),
341342
};
342-
let reference_js = PathBuf::from("target/static-files-test-case-reference.js");
343-
let test_case = PathBuf::from("target/static-files-test-case");
343+
let temp_dir = TempDir::with_prefix("mdbook-").unwrap();
344+
let reference_js = Path::new("static-files-test-case-reference.js");
344345
let mut html_config = HtmlConfig::default();
345-
html_config.additional_js.push(reference_js.clone());
346+
html_config.additional_js.push(reference_js.to_owned());
346347
write_file(
347-
&Path::new("."),
348-
&reference_js,
348+
temp_dir.path(),
349+
reference_js,
349350
br#"{{ resource "book.js" }}"#,
350351
)
351352
.unwrap();
352-
let mut static_files = StaticFiles::new(&theme, &html_config, &Path::new(".")).unwrap();
353+
let mut static_files = StaticFiles::new(&theme, &html_config, temp_dir.path()).unwrap();
353354
static_files.hash_files().unwrap();
354-
static_files.write_files(&test_case).unwrap();
355+
static_files.write_files(temp_dir.path()).unwrap();
355356
// custom JS winds up referencing book.js
356-
let mut reference_js_dest = File::open(
357-
"target/static-files-test-case/target/static-files-test-case-reference-635c9cdc.js",
357+
let reference_js_content = std::fs::read_to_string(
358+
temp_dir
359+
.path()
360+
.join("static-files-test-case-reference-635c9cdc.js"),
358361
)
359362
.unwrap();
360-
let mut reference_js_content = Vec::new();
361-
reference_js_dest
362-
.read_to_end(&mut reference_js_content)
363-
.unwrap();
364-
std::mem::drop(reference_js_dest);
365-
assert_eq!(br#"../book-e3b0c442.js"#, &reference_js_content[..]);
363+
assert_eq!("book-e3b0c442.js", reference_js_content);
366364
// book.js winds up empty
367-
let mut reference_js_dest =
368-
File::open("target/static-files-test-case/book-e3b0c442.js").unwrap();
369-
let mut reference_js_content = Vec::new();
370-
reference_js_dest
371-
.read_to_end(&mut reference_js_content)
372-
.unwrap();
373-
std::mem::drop(reference_js_dest);
374-
assert_eq!(br#""#, &reference_js_content[..]);
375-
std::fs::remove_dir_all(&test_case).unwrap();
376-
std::fs::remove_file(&reference_js).unwrap();
365+
let book_js_content =
366+
std::fs::read_to_string(temp_dir.path().join("book-e3b0c442.js")).unwrap();
367+
assert_eq!("", book_js_content);
377368
}
378369
}

0 commit comments

Comments
 (0)