diff options
author | Dennis Kobert <dennis@kobert.dev> | 2019-11-09 03:12:41 +0100 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2019-11-09 03:12:41 +0100 |
commit | 1e0422eb84988464836a8f17fd7420b9f3cf277b (patch) | |
tree | 2704f35afacf93fdb733ba88f0459f487380a221 /kernel/src/testing/panic.rs | |
parent | 8602b41f192fec43fde735c9c1f99cd59040f1bb (diff) |
Add testing runner functions
Diffstat (limited to 'kernel/src/testing/panic.rs')
-rw-r--r-- | kernel/src/testing/panic.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/kernel/src/testing/panic.rs b/kernel/src/testing/panic.rs new file mode 100644 index 0000000..7fb769b --- /dev/null +++ b/kernel/src/testing/panic.rs @@ -0,0 +1,51 @@ +use crate::io::{qemu, serial, vga_text}; +use core::fmt::Write; +use qemu::{exit_qemu, QemuExitCode}; +use serial::SerialStream; +use vga_text::OStream; + +#[cfg(test)] +pub fn serial_test_runner_panic(tests: &[&dyn Fn()]) { + let mut stdout = SerialStream::new(); + write!(stdout, "Running {} tests", tests.len()).unwrap(); + for test in tests { + test(); + write!(stdout, "[test did not panic]").unwrap(); + exit_qemu(QemuExitCode::Failed); + } + exit_qemu(QemuExitCode::Success); +} + +#[cfg(test)] +pub fn serial_test_runner(tests: &[&dyn Fn()]) { + let mut stdout = SerialStream::new(); + write!(stdout, "Running {} tests", tests.len()).unwrap(); + for test in tests { + test(); + write!(stdout, "[test did not panic]").unwrap(); + } + exit_qemu(QemuExitCode::Success); +} + +#[cfg(test)] +pub fn test_runner_panic(tests: &[&dyn Fn()]) { + let mut stdout = OStream::new(); + write!(stdout, "Running {} tests", tests.len()).unwrap(); + for test in tests { + test(); + write!(stdout, "[test did not panic]").unwrap(); + exit_qemu(QemuExitCode::Failed); + } + exit_qemu(QemuExitCode::Success); +} + +#[cfg(test)] +pub fn test_runner(tests: &[&dyn Fn()]) { + let mut stdout = OStream::new(); + write!(stdout, "Running {} tests", tests.len()).unwrap(); + for test in tests { + test(); + write!(stdout, "[test did not panic]").unwrap(); + } + exit_qemu(QemuExitCode::Success); +} |