mirror of
https://github.com/ouch-org/ouch.git
synced 2025-06-03 10:00:19 +00:00
57 lines
1.8 KiB
Rust
57 lines
1.8 KiB
Rust
#[macro_use]
|
|
mod utils;
|
|
|
|
use rand::{rngs::SmallRng, SeedableRng};
|
|
use tempfile::NamedTempFile;
|
|
|
|
use crate::utils::write_random_content;
|
|
|
|
#[test]
|
|
/// Makes sure that the files ouch produces are what they claim to be, checking their
|
|
/// types through MIME sniffing.
|
|
fn sanity_check_through_mime() {
|
|
let temp_dir = tempfile::tempdir().expect("to build a temporary directory");
|
|
let temp_dir_path = temp_dir.path();
|
|
|
|
let test_file = &mut NamedTempFile::new_in(temp_dir_path).expect("to be able to build a temporary file");
|
|
write_random_content(test_file, &mut SmallRng::from_entropy());
|
|
|
|
let formats = [
|
|
"7z", "tar", "zip", "tar.gz", "tgz", "tbz", "tbz2", "txz", "tlzma", "tzst", "tar.bz", "tar.bz2", "tar.lzma",
|
|
"tar.xz", "tar.zst",
|
|
];
|
|
|
|
let expected_mimes = [
|
|
"application/x-7z-compressed",
|
|
"application/x-tar",
|
|
"application/zip",
|
|
"application/gzip",
|
|
"application/gzip",
|
|
"application/x-bzip2",
|
|
"application/x-bzip2",
|
|
"application/x-xz",
|
|
"application/x-xz",
|
|
"application/zstd",
|
|
"application/x-bzip2",
|
|
"application/x-bzip2",
|
|
"application/x-xz",
|
|
"application/x-xz",
|
|
"application/zstd",
|
|
];
|
|
|
|
assert_eq!(formats.len(), expected_mimes.len());
|
|
|
|
for (format, expected_mime) in formats.iter().zip(expected_mimes.iter()) {
|
|
let path_to_compress = test_file.path();
|
|
|
|
let compressed_file_path = &format!("{}.{}", path_to_compress.display(), format);
|
|
ouch!("c", path_to_compress, compressed_file_path);
|
|
|
|
let sniffed = infer::get_from_path(compressed_file_path)
|
|
.expect("the file to be read")
|
|
.expect("the MIME to be found");
|
|
|
|
assert_eq!(&sniffed.mime_type(), expected_mime);
|
|
}
|
|
}
|