diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-01-05 20:52:26 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-01-05 20:52:26 +0100 |
| commit | 0fca7c5476099212ed1fa9ed812aa456ba004300 (patch) | |
| tree | 3acacb019691f56a510ddf21f929816e45d21d9a /src/utils.rs | |
| parent | b17907faf8d9693cef94a6048d802bd4ced9102f (diff) | |
Add tests for utils and metadata
Diffstat (limited to 'src/utils.rs')
| -rw-r--r-- | src/utils.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/utils.rs b/src/utils.rs index 4522f4c..01b6cdf 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -2,6 +2,7 @@ use std::fs::{copy, create_dir_all, read_dir}; use std::io::Result; use std::path::Path; +/// Recursively copies the contents of a directory. pub fn recursively_copy(source: &Path, target: &Path) -> Result<()> { let entries = read_dir(source)?; for entry in entries { @@ -21,3 +22,50 @@ pub fn recursively_copy(source: &Path, target: &Path) -> Result<()> { Ok(()) } + +#[cfg(test)] +mod tests { + use std::fs::create_dir_all; + + use super::*; + + use test_utilities::*; + + #[test] + fn test_recursively_copies_directories() { + let test_dir = setup_test_dir(); + let source_dir = test_dir.join("source"); + let target_dir = test_dir.join("target"); + let nested_dir = source_dir.join("nested"); + let hidden_dir = source_dir.join(".hidden"); + create_dir_all(&target_dir).expect("Could not create target test directory"); + create_dir_all(&nested_dir).expect("Could not create nested test directory"); + create_dir_all(&hidden_dir).expect("Could not create hidden test directory"); + create_test_file(&source_dir.join("image.png"), "A beautiful pencil"); + create_test_file(&nested_dir.join("hello.txt"), "I am here"); + create_test_file(&nested_dir.join(".hidden"), "I am not here?"); + create_test_file(&hidden_dir.join("in_plain_sight.mkv"), "Almost"); + create_test_file(&hidden_dir.join(".hidden"), "I'm double hidden"); + + recursively_copy(&source_dir, &target_dir).expect("Copy failed on test directory"); + + assert_file_contents(&target_dir.join("image.png"), "A beautiful pencil"); + assert_file_contents(&target_dir.join("nested/hello.txt"), "I am here"); + assert_file_contents(&target_dir.join("nested/.hidden"), "I am not here?"); + assert_file_contents(&target_dir.join(".hidden/in_plain_sight.mkv"), "Almost"); + assert_file_contents(&target_dir.join(".hidden/.hidden"), "I'm double hidden"); + } + + #[test] + fn test_empty_directory() { + let test_dir = setup_test_dir(); + let source_dir = test_dir.join("source"); + let target_dir = test_dir.join("target"); + create_dir_all(&source_dir).expect("Could not create source test directory"); + create_dir_all(&target_dir).expect("Could not create target test directory"); + + recursively_copy(&source_dir, &target_dir).expect("Copy failed on empty test directory"); + + assert_eq!(target_dir.read_dir().unwrap().count(), 0); + } +} |