mirror of
https://github.com/ouch-org/ouch.git
synced 2025-06-06 11:35:45 +00:00
test: add overwrite and cancel tests
This commit is contained in:
parent
b5cb3e075d
commit
aae86d9e44
@ -194,6 +194,83 @@ fn multiple_files(
|
||||
assert_same_directory(before, after, !matches!(ext, DirectoryExtension::Zip));
|
||||
}
|
||||
|
||||
#[proptest(cases = 25)]
|
||||
fn multiple_files_with_conflict_and_choce_to_overwrite(
|
||||
ext: DirectoryExtension,
|
||||
#[any(size_range(0..1).lift())] extra_extensions: Vec<FileExtension>,
|
||||
#[strategy(0u8..3)] depth: u8,
|
||||
) {
|
||||
let dir = tempdir().unwrap();
|
||||
let dir = dir.path();
|
||||
|
||||
let before = &dir.join("before");
|
||||
let before_dir = &before.join("dir");
|
||||
fs::create_dir_all(before_dir).unwrap();
|
||||
create_random_files(before_dir, depth, &mut SmallRng::from_entropy());
|
||||
|
||||
let after = &dir.join("after");
|
||||
let after_dir = &after.join("dir");
|
||||
fs::create_dir_all(after_dir).unwrap();
|
||||
create_random_files(after_dir, depth, &mut SmallRng::from_entropy());
|
||||
|
||||
let archive = &dir.join(format!("archive.{}", merge_extensions(&ext, extra_extensions)));
|
||||
ouch!("-A", "c", before_dir, archive);
|
||||
|
||||
crate::utils::cargo_bin()
|
||||
.arg("decompress")
|
||||
.arg(archive)
|
||||
.arg("-d")
|
||||
.arg(after)
|
||||
.arg("--yes")
|
||||
//.write_stdin("y")
|
||||
.assert()
|
||||
.success();
|
||||
|
||||
assert_same_directory(before, after, false);
|
||||
}
|
||||
|
||||
#[proptest(cases = 25)]
|
||||
fn multiple_files_with_conflict_and_choce_to_not_overwrite(
|
||||
ext: DirectoryExtension,
|
||||
#[any(size_range(0..1).lift())] extra_extensions: Vec<FileExtension>,
|
||||
#[strategy(0u8..3)] depth: u8,
|
||||
) {
|
||||
let dir = tempdir().unwrap();
|
||||
let dir = dir.path();
|
||||
|
||||
let before = &dir.join("before");
|
||||
let before_dir = &before.join("dir");
|
||||
fs::create_dir_all(before_dir).unwrap();
|
||||
create_random_files(before_dir, depth, &mut SmallRng::from_entropy());
|
||||
|
||||
let after = &dir.join("after");
|
||||
let after_dir = &after.join("dir");
|
||||
fs::create_dir_all(after_dir).unwrap();
|
||||
|
||||
let after_backup = &dir.join("after_backup");
|
||||
let after_backup_dir = &after_backup.join("dir");
|
||||
fs::create_dir_all(after_backup_dir).unwrap();
|
||||
|
||||
// Create a file with the same name as one of the files in the after directory
|
||||
fs::write(after_dir.join("something.txt"), "Some content").unwrap();
|
||||
fs::copy(after_dir.join("something.txt"), after_backup_dir.join("something.txt")).unwrap();
|
||||
|
||||
let archive = &dir.join(format!("archive.{}", merge_extensions(&ext, extra_extensions)));
|
||||
ouch!("-A", "c", before_dir, archive);
|
||||
|
||||
crate::utils::cargo_bin()
|
||||
.arg("decompress")
|
||||
.arg(archive)
|
||||
.arg("-d")
|
||||
.arg(after)
|
||||
.arg("--no")
|
||||
.assert()
|
||||
.success();
|
||||
|
||||
assert_same_directory(after, after_backup, false);
|
||||
}
|
||||
|
||||
|
||||
#[cfg(feature = "unrar")]
|
||||
#[test]
|
||||
fn unpack_rar() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user