segul 0.23.2

An ultrafast and memory-efficient tool for phylogenomics
Documentation
use std::io::Result;
use std::path::Path;

use assert_cmd::{Command, cargo};
use tempdir::TempDir;

pub const DIR: &str = "temp";

#[macro_export]
macro_rules! initiate_cmd {
    ($cmd: ident, $sub_cmd1: expr_2021, $sub_cmd2: expr_2021, $dir: expr_2021, $tmp_dir: ident) => {
        let $tmp_dir = utils::create_tmp_dir().unwrap();
        let dir = env::current_dir().unwrap().join($dir);
        let path = std::path::PathBuf::from($tmp_dir.path());
        let mut $cmd = utils::segul(&path);
        $cmd.arg($sub_cmd1)
            .arg($sub_cmd2)
            .arg("-d")
            .arg(dir)
            .arg("-f")
            .arg("nexus");
    };
}

#[macro_export]
macro_rules! test_results {
    ($res: expr_2021, $tmp_dir: ident, $path: expr_2021, $fmt: ident) => {
        let pred = predicates::path::is_dir();
        let res_path = $tmp_dir.path().join($path);

        let files = SeqFileFinder::new(&res_path).find(&InputFmt::$fmt);

        assert!(pred.eval(&res_path));
        assert_eq!($res, files.len());

        $tmp_dir.close().unwrap();
    };
}

pub fn segul(dir: &Path) -> Command {
    let mut cmd = cargo::cargo_bin_cmd!("segul");
    cmd.current_dir(dir);
    cmd
}
pub fn create_tmp_dir() -> Result<TempDir> {
    let tmp_dir = TempDir::new(DIR)?;
    Ok(tmp_dir)
}