use crate::{ adapted_iter::AdaptedFilesIterBox, adapters::{ custom::{CustomSpawningFileAdapter, BUILTIN_SPAWNING_ADAPTERS}, AdaptInfo, ReadBox, }, config::RgaConfig, matching::{FastFileMatcher, FileMatcher}, recurse::concat_read_streams, }; use anyhow::Result; use std::path::{Path, PathBuf}; use tokio::{fs::File, io::AsyncReadExt}; pub use pretty_assertions::{assert_eq, assert_ne}; pub fn test_data_dir() -> PathBuf { let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR")); d.push("exampledir/test/"); d } pub async fn simple_fs_adapt_info(filepath: &Path) -> Result<(AdaptInfo, FileMatcher)> { Ok(simple_adapt_info_full( filepath, Box::pin(File::open(filepath).await?), true, )) } pub fn simple_adapt_info(filepath: &Path, inp: ReadBox) -> (AdaptInfo, FileMatcher) { simple_adapt_info_full(filepath, inp, false) } pub fn simple_adapt_info_full( filepath: &Path, inp: ReadBox, is_real_file: bool, ) -> (AdaptInfo, FileMatcher) { ( AdaptInfo { filepath_hint: filepath.to_owned(), is_real_file, archive_recursion_depth: 0, inp, line_prefix: "PREFIX:".to_string(), config: RgaConfig::default(), postprocess: true, }, FastFileMatcher::FileExtension( filepath .extension() .unwrap_or_default() .to_string_lossy() .into_owned(), ) .into(), ) } pub async fn adapted_to_vec(adapted: AdaptedFilesIterBox) -> Result> { let mut res = concat_read_streams(adapted); let mut buf = Vec::new(); res.read_to_end(&mut buf).await?; Ok(buf) } pub fn poppler_adapter() -> CustomSpawningFileAdapter { let adapter = BUILTIN_SPAWNING_ADAPTERS .iter() .find(|e| e.name == "poppler") .expect("no poppler adapter"); adapter.to_adapter() } #[cfg(test)] pub fn init_logging() { let _ = env_logger::builder().is_test(true).try_init(); }