use crate::template::Context; use crate::utils::recursively_copy; use std::io::Result; use std::path::Path; pub fn generate(source: &Path, _: &Path, target: &Path, _: &Context) -> Result<()> { if source.exists() { return recursively_copy(source, target); } Ok(()) } #[cfg(test)] mod tests { use std::collections::HashMap; use std::fs::create_dir_all; use super::*; use test_utilities::*; #[test] fn test_copies_files() { let test_dir = setup_test_dir(); let static_dir = test_dir.join("static"); let template_dir = test_dir.join("templates"); let output_dir = test_dir.join("output"); create_dir_all(&static_dir).expect("Could not create static directory"); create_dir_all(&output_dir).expect("Could not create output directory"); create_test_file(&static_dir.join("test.jpg"), "Cool hat"); let context = HashMap::new(); generate(&static_dir, &template_dir, &output_dir, &context).expect("Generate failed"); assert_file_contents(&output_dir.join("test.jpg"), "Cool hat"); cleanup_test_dir(&test_dir); } #[test] fn test_creates_directories_if_they_do_not_exist() { let test_dir = setup_test_dir(); let static_dir = test_dir.join("static"); let template_dir = test_dir.join("templates"); let output_dir = test_dir.join("output"); create_dir_all(&static_dir).expect("Could not create static directory"); create_dir_all(static_dir.join("nested")).expect("Could not create output directory"); create_test_file(&static_dir.join("nested/test.mov"), "Cool hats, multiple."); let context = HashMap::new(); generate(&static_dir, &template_dir, &output_dir, &context).expect("Generate failed"); assert_file_contents(&output_dir.join("nested/test.mov"), "Cool hats, multiple."); cleanup_test_dir(&test_dir); } #[test] fn test_it_does_not_fail_if_source_directory_does_not_exist() { let test_dir = setup_test_dir(); let static_dir = test_dir.join("static"); let template_dir = test_dir.join("templates"); let output_dir = test_dir.join("output"); let context = HashMap::new(); let result = generate(&static_dir, &template_dir, &output_dir, &context); assert!(result.is_ok()); cleanup_test_dir(&test_dir); } }