os_test_framework/
panic.rs1use core::panic::PanicInfo;
2
3use owo_colors::OwoColorize;
4
5use crate::platform::{ExitState, try_platform};
6
7pub fn handle_panic(panic_info: &PanicInfo) -> ! {
8 if let Some(platform) = try_platform() {
9 let mut platform = platform.lock();
10 platform.print(format_args!(
11 " {}\n\n{}\n",
12 "Failed".bright_red().bold(),
13 panic_info.message().red()
14 ));
15 platform.exit(ExitState::Failed)
16 }
17
18 loop {
19 core::hint::spin_loop();
20 }
21}
22
23#[macro_export]
24macro_rules! forward_panic {
25 () => {
26 #[cfg(test)]
27 #[panic_handler]
28 fn _os_test_framework_panic_handler(panic_info: &core::panic::PanicInfo) -> ! {
29 $crate::handle_panic(panic_info);
30 }
31 };
32}