From 0c4d4ff916b2f9159dbf7aebf9cd5a978cc3693a Mon Sep 17 00:00:00 2001 From: tommady Date: Thu, 22 May 2025 06:31:56 +0000 Subject: [PATCH] fix linter and enhance merge test Signed-off-by: tommady --- src/commands/decompress.rs | 6 +-- tests/integration.rs | 79 ++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 21 deletions(-) diff --git a/src/commands/decompress.rs b/src/commands/decompress.rs index 059bbd3..2dd344e 100644 --- a/src/commands/decompress.rs +++ b/src/commands/decompress.rs @@ -344,7 +344,6 @@ fn unpack( let output_dir_cleaned = if is_valid_output_dir { output_dir } else { - // TODO: will enhance later match utils::check_conflics_and_ask_user(output_dir, question_policy, QuestionAction::Decompression)? { FileConflitOperation::Cancel => return Ok(ControlFlow::Break(())), FileConflitOperation::Overwrite => { @@ -363,7 +362,7 @@ fn unpack( fs::create_dir(output_dir_cleaned)?; } - let files = unpack_fn(&output_dir_cleaned)?; + let files = unpack_fn(output_dir_cleaned)?; Ok(ControlFlow::Continue(files)) } @@ -407,7 +406,6 @@ fn smart_unpack( (temp_dir_path.to_owned(), output_file_path.to_owned()) }; - // TODO: will enhance later match utils::check_conflics_and_ask_user(&new_path, question_policy, QuestionAction::Decompression)? { FileConflitOperation::Cancel => return Ok(ControlFlow::Break(())), FileConflitOperation::GoodToGo => { @@ -446,7 +444,7 @@ fn smart_unpack( continue; } - fs::copy(&path, &new_path.join(name))?; + fs::copy(&path, new_path.join(name))?; } } } diff --git a/tests/integration.rs b/tests/integration.rs index 9f870db..d98962e 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -806,7 +806,7 @@ fn no_git_folder_after_decompression_with_gitignore_flag_active() { ); } -#[cfg(feature = "allow_piped_choice")] +// #[cfg(feature = "allow_piped_choice")] #[proptest(cases = 25)] fn unpack_multiple_sources_into_the_same_destination_with_merge( ext: DirectoryExtension, @@ -814,35 +814,63 @@ fn unpack_multiple_sources_into_the_same_destination_with_merge( ) { let temp_dir = tempdir()?; let root_path = temp_dir.path(); - let source_path = root_path - .join(format!("example_{}", merge_extensions(&ext, &extra_extensions))) - .join("sub_a") - .join("sub_b") - .join("sub_c"); + let source_path = root_path.join(format!("example_{}", merge_extensions(&ext, &extra_extensions))); fs::create_dir_all(&source_path)?; + fs::File::create(source_path.join("file1.txt"))?; + fs::File::create(source_path.join("file2.txt"))?; + fs::File::create(source_path.join("file3.txt"))?; + let sub_folder_path = source_path.join("sub_a"); + fs::create_dir_all(&sub_folder_path)?; + fs::File::create(sub_folder_path.join("file1.txt"))?; + fs::File::create(sub_folder_path.join("file2.txt"))?; + fs::File::create(sub_folder_path.join("file3.txt"))?; + let sub_folder_path = sub_folder_path.join("sub_b"); + fs::create_dir_all(&sub_folder_path)?; + fs::File::create(sub_folder_path.join("file1.txt"))?; + fs::File::create(sub_folder_path.join("file2.txt"))?; + fs::File::create(sub_folder_path.join("file3.txt"))?; + let sub_folder_path = sub_folder_path.join("sub_c"); + fs::create_dir_all(&sub_folder_path)?; + fs::File::create(sub_folder_path.join("file1.txt"))?; + fs::File::create(sub_folder_path.join("file2.txt"))?; + fs::File::create(sub_folder_path.join("file3.txt"))?; + let archive = root_path.join(format!("archive.{}", merge_extensions(&ext, &extra_extensions))); crate::utils::cargo_bin() .arg("compress") - .args([ - fs::File::create(source_path.join("file1.txt"))?.path(), - fs::File::create(source_path.join("file2.txt"))?.path(), - fs::File::create(source_path.join("file3.txt"))?.path(), - ]) + .arg(&source_path) .arg(&archive) .assert() .success(); fs::remove_dir_all(&source_path)?; + + let source_path = root_path.join(format!("example_{}", merge_extensions(&ext, &extra_extensions))); fs::create_dir_all(&source_path)?; + fs::File::create(source_path.join("file3.txt"))?; + fs::File::create(source_path.join("file4.txt"))?; + fs::File::create(source_path.join("file5.txt"))?; + let sub_folder_path = source_path.join("sub_a"); + fs::create_dir_all(&sub_folder_path)?; + fs::File::create(sub_folder_path.join("file3.txt"))?; + fs::File::create(sub_folder_path.join("file4.txt"))?; + fs::File::create(sub_folder_path.join("file5.txt"))?; + let sub_folder_path = sub_folder_path.join("sub_b"); + fs::create_dir_all(&sub_folder_path)?; + fs::File::create(sub_folder_path.join("file3.txt"))?; + fs::File::create(sub_folder_path.join("file4.txt"))?; + fs::File::create(sub_folder_path.join("file5.txt"))?; + let sub_folder_path = sub_folder_path.join("sub_c"); + fs::create_dir_all(&sub_folder_path)?; + fs::File::create(sub_folder_path.join("file3.txt"))?; + fs::File::create(sub_folder_path.join("file4.txt"))?; + fs::File::create(sub_folder_path.join("file5.txt"))?; + let archive1 = root_path.join(format!("archive1.{}", merge_extensions(&ext, &extra_extensions))); crate::utils::cargo_bin() .arg("compress") - .args([ - fs::File::create(source_path.join("file3.txt"))?.path(), - fs::File::create(source_path.join("file4.txt"))?.path(), - fs::File::create(source_path.join("file5.txt"))?.path(), - ]) + .arg(&source_path) .arg(&archive1) .assert() .success(); @@ -867,7 +895,24 @@ fn unpack_multiple_sources_into_the_same_destination_with_merge( .assert() .success(); - assert_eq!(5, out_path.as_path().read_dir()?.count()); + assert_eq!(20, count_files_recursively(&out_path)); +} + +fn count_files_recursively(dir: &Path) -> usize { + let mut count = 0; + // println!("{:?}", dir); + if let Ok(entries) = fs::read_dir(dir) { + for entry in entries.flatten() { + let path = entry.path(); + if path.is_file() { + // println!("{:?}", path); + count += 1; + } else if path.is_dir() { + count += count_files_recursively(&path); + } + } + } + count } #[test]