#[macro_export] macro_rules! e2e_test { ($name:ident, $fun:expr) => { #[test] fn $name() { let (dir, _) = crate::utils::setup(stringify!($name)); let fun: fn(crate::utils::Dir) = $fun; fun(dir); } }; } #[macro_export] macro_rules! eq { ($expected:expr, $got:expr) => { let expected = &*$expected; let got = &*$got; if expected != got { panic!( " printed outputs differ! expected: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ got: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ", expected, got ); } }; } #[macro_export] macro_rules! eq_re { ($expected:expr, $got:expr) => { let re = regex::Regex::new($expected).unwrap(); let expected = &*$expected; let got = &*$got; if !re.is_match(got) { panic!( " printed outputs differ! expected: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ got: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ", expected, got ); } }; }