You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ripgrep-all/src/test_utils.rs

80 lines
2.0 KiB
Rust

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<Vec<u8>> {
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();
}