use std::process::Command;
pub(crate) use insta_cmd::assert_cmd_snapshot;
pub(crate) use crate::cot_cli;
mod cli;
mod help;
mod migration;
mod new;
pub(crate) fn cot_clis_with_verbosity(cmd: &Command) -> Vec<Command> {
let get_cmd = |arg: &str| {
let mut cmd_clone = Command::new(cmd.get_program());
cmd_clone.args(cmd.get_args());
if let Some(dir) = cmd.get_current_dir() {
cmd_clone.current_dir(dir);
}
cmd_clone.arg(arg);
cmd_clone
};
vec![
get_cmd("-q"),
get_cmd("-v"),
get_cmd("-vv"),
get_cmd("-vvv"),
get_cmd("-vvvv"),
get_cmd("-vvvvv"),
]
}
#[macro_export]
macro_rules! cot_cli {
( $( $arg:expr ),* ) => {
{
let mut cmd = $crate::snapshot_testing::cot_cli_cmd();
$(
cmd.arg($arg);
)*
cmd
}
}
}
pub(crate) fn cot_cli_cmd() -> Command {
if let Ok(np) = std::env::var("COT_CLI_TEST_CMD") {
Command::new(np)
} else {
Command::new(assert_cmd::cargo::cargo_bin!("cot"))
}
}
const GENERIC_FILTERS: &[(&str, &str)] = &[
(r"(?m)^.\[2m[\d-]+?T[\d:\.]+?Z.\[0m ", "TIMESTAMP "), (r"cot\.exe", r"cot"), ];
const TEMP_PATH_FILTERS: &[(&str, &str)] = &[
(r"(/private)?/var/folders/([^/]+/)+?T/", r"/tmp/"), (r"(C:)?\\.*\\Temp", "/tmp"), (r"\\{1,2}", "/"), ];
const TEMP_PROJECT_FILTERS: &[(&str, &str)] = &[
(r"cot-test-[^/]+", "TEMP_PATH"), ];