Split test failure printing in two parts

Due to static buffer size the panic info might not fit. We still
want to print [failed] message in this case though.
This commit is contained in:
Berkus Decker 2020-10-25 22:21:06 +02:00
parent 79baa20eb6
commit 0def5a4687
2 changed files with 6 additions and 3 deletions

View File

@ -1,6 +1,7 @@
#[cfg(not(test))] #[cfg(not(test))]
#[panic_handler] #[panic_handler]
fn panicked(info: &core::panic::PanicInfo) -> ! { fn panicked(info: &core::panic::PanicInfo) -> ! {
// @todo This may fail to print if the panic message is too long for local print buffer.
crate::println!("{}", info); crate::println!("{}", info);
crate::endless_sleep() crate::endless_sleep()
} }
@ -8,6 +9,8 @@ fn panicked(info: &core::panic::PanicInfo) -> ! {
#[cfg(test)] #[cfg(test)]
#[panic_handler] #[panic_handler]
fn panicked(info: &core::panic::PanicInfo) -> ! { fn panicked(info: &core::panic::PanicInfo) -> ! {
crate::println!("[failed]\nError: {}\n", info); crate::println!("\n[failed]\n");
// @todo This may fail to print if the panic message is too long for local print buffer.
crate::println!("\nError: {}\n", info);
crate::qemu::semihosting::exit_failure() crate::qemu::semihosting::exit_failure()
} }

View File

@ -12,8 +12,8 @@ pub fn test_runner(tests: &[&dyn Fn()]) {
println!("Running {} tests", tests.len()); println!("Running {} tests", tests.len());
for test in tests { for test in tests {
test(); test();
println!("[ok]"); println!("\n[ok]\n");
} }
println!("[success]"); println!("\n[success]\n");
qemu::semihosting::exit_success(); qemu::semihosting::exit_success();
} }