diff --git a/tests/integration.rs b/tests/integration.rs index 52413a7..ba5b901 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -59,7 +59,7 @@ enum Extension { } /// Converts a list of extension structs to string -fn merge_extensions(ext: impl ToString, exts: Vec) -> String { +fn merge_extensions(ext: impl ToString, exts: &Vec) -> String { once(ext.to_string()) .chain(exts.into_iter().map(|x| x.to_string())) .collect::>() @@ -114,7 +114,7 @@ fn single_empty_file(ext: Extension, #[any(size_range(0..8).lift())] exts: Vec, +) { + 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"); + + fs::create_dir_all(&source_path)?; + 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(&archive) + .assert() + .success(); + + fs::remove_dir_all(&source_path)?; + fs::create_dir_all(&source_path)?; + 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("file4.txt"))?.path(), + fs::File::create(source_path.join("file5.txt"))?.path(), + fs::File::create(source_path.join("file6.txt"))?.path(), + ]) + .arg(&archive1) + .assert() + .success(); + + let out_path = root_path.join(format!("out_{}", merge_extensions(&ext, &extra_extensions))); + fs::create_dir_all(&out_path)?; + + crate::utils::cargo_bin() + .arg("decompress") + .arg(archive) + .arg("-d") + .arg(&out_path) + .assert() + .success(); + + crate::utils::cargo_bin() + .arg("decompress") + .arg(archive1) + .arg("-d") + .arg(&out_path) + .write_stdin("m") + .assert() + .success(); + + assert_eq!(6, out_path.as_path().read_dir()?.count()); +}