v5gdb 0.1.0-alpha.2

GDB-compatible debugger backend for the VEX V5 platform
use std::process::{ExitCode, Termination};

pub fn test<F, R>(run: F)
where
    F: FnOnce() -> R,
    R: Termination,
{
    println!("::test:status=run");
    std::panic::set_hook(Box::new(|mesg| {
        println!("{mesg}");
        println!("::test:status=panic");
        std::process::exit(1);
    }));
    let output = run().report();

    if output == ExitCode::SUCCESS {
        println!("::test:status=done");
    } else {
        println!("::test:status=error");
    }
}

macro_rules! test_harness {
    ($test:ident) => {
        #[vexide::main(banner(enabled = false))]
        async fn main(p: Peripherals) {
            $crate::common::test(|| $test(p));
        }
    };
}
pub(crate) use test_harness;