use std::{path::PathBuf, time::Duration};
use regex::Regex;
pub type Id = u64;
pub struct Config {
pub name: String,
pub cmd: String,
pub expect_dir: Option<PathBuf>,
pub timeout: Duration,
}
pub struct Suite {
pub paths: Vec<PathBuf>,
pub config: Config,
}
impl Suite {
pub fn with_filters<'a>(
mut self,
include: Option<&'a Regex>,
exclude: Option<&'a Regex>,
) -> Self {
let name = self.config.name.clone() + ":";
self.paths.retain(|path| {
let path_str = name.clone() + &path.to_string_lossy();
include.map(|incl| incl.is_match(&path_str)).unwrap_or(true)
&& exclude
.map(|excl| !excl.is_match(&path_str))
.unwrap_or(true)
});
self
}
}