summaryrefslogtreecommitdiff
path: root/kernel/src/testing/panic.rs
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2019-11-09 03:12:41 +0100
committerDennis Kobert <dennis@kobert.dev>2019-11-09 03:12:41 +0100
commit1e0422eb84988464836a8f17fd7420b9f3cf277b (patch)
tree2704f35afacf93fdb733ba88f0459f487380a221 /kernel/src/testing/panic.rs
parent8602b41f192fec43fde735c9c1f99cd59040f1bb (diff)
Add testing runner functions
Diffstat (limited to 'kernel/src/testing/panic.rs')
-rw-r--r--kernel/src/testing/panic.rs51
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);
+}