diff --git a/src/main.rs b/src/main.rs index 4798dec4..f8e09cbd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,12 +29,22 @@ fn test_runner(tests: &[&dyn Fn()]) { } /// This function is called on panic. +#[cfg(not(test))] #[panic_handler] fn panic(info: &PanicInfo) -> ! { println!("{}", info); loop {} } +#[cfg(test)] +#[panic_handler] +fn panic(info: &PanicInfo) -> ! { + serial_println!("[failed]\n"); + serial_println!("Error: {}\n", info); + unsafe { exit_qemu(QemuExitCode::Failed); } + loop {} +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] #[repr(u32)] pub enum QemuExitCode {