From 2a4e5583ab403a36d6ecf6d58542ffe3b6375309 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Thu, 20 Feb 2025 08:48:16 -0800 Subject: [PATCH] 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. --- src/renderer/html_handlebars/static_files.rs | 43 ++++++++------------ 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/src/renderer/html_handlebars/static_files.rs b/src/renderer/html_handlebars/static_files.rs index e8d2bf86..a2db7f50 100644 --- a/src/renderer/html_handlebars/static_files.rs +++ b/src/renderer/html_handlebars/static_files.rs @@ -314,7 +314,8 @@ mod tests { use crate::config::HtmlConfig; use crate::theme::Theme; use crate::utils::fs::write_file; - use std::io::Read; + use tempfile::TempDir; + #[test] fn test_write_directive() { let theme = Theme { @@ -339,40 +340,30 @@ mod tests { fonts_css: None, font_files: Vec::new(), }; - let reference_js = PathBuf::from("target/static-files-test-case-reference.js"); - let test_case = PathBuf::from("target/static-files-test-case"); + let temp_dir = TempDir::with_prefix("mdbook-").unwrap(); + let reference_js = Path::new("static-files-test-case-reference.js"); 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( - &Path::new("."), - &reference_js, + temp_dir.path(), + reference_js, br#"{{ resource "book.js" }}"#, ) .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.write_files(&test_case).unwrap(); + static_files.write_files(temp_dir.path()).unwrap(); // custom JS winds up referencing book.js - let mut reference_js_dest = File::open( - "target/static-files-test-case/target/static-files-test-case-reference-635c9cdc.js", + let reference_js_content = std::fs::read_to_string( + temp_dir + .path() + .join("static-files-test-case-reference-635c9cdc.js"), ) .unwrap(); - let mut reference_js_content = Vec::new(); - 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[..]); + assert_eq!("book-e3b0c442.js", reference_js_content); // book.js winds up empty - let mut reference_js_dest = - File::open("target/static-files-test-case/book-e3b0c442.js").unwrap(); - let mut reference_js_content = Vec::new(); - 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(); + let book_js_content = + std::fs::read_to_string(temp_dir.path().join("book-e3b0c442.js")).unwrap(); + assert_eq!("", book_js_content); } }