aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/main.tests.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-01 12:15:25 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-01 12:15:25 +0200
commit1f652b8b5ca5dbea588975466801cb1479f3dda8 (patch)
tree2852f1d7cc6d33d0cb06c66fcfcf8c03dac2a112 /kernel/src/main.tests.cpp
parent0369fb7c4baa543dfb36ebb39ab53ac7560994ba (diff)
downloadteachos-1f652b8b5ca5dbea588975466801cb1479f3dda8.tar.xz
teachos-1f652b8b5ca5dbea588975466801cb1479f3dda8.zip
kernel/tests: dissolve tests into source tree
Diffstat (limited to 'kernel/src/main.tests.cpp')
-rw-r--r--kernel/src/main.tests.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/kernel/src/main.tests.cpp b/kernel/src/main.tests.cpp
new file mode 100644
index 0000000..b3ae142
--- /dev/null
+++ b/kernel/src/main.tests.cpp
@@ -0,0 +1,38 @@
+#include "kapi/interrupts.hpp"
+#include "kapi/memory.hpp"
+#include <kapi/cio.hpp>
+#include <kapi/cpu.hpp>
+
+#include <catch2/catch_session.hpp>
+
+auto main(int argc, char ** argv) -> int
+{
+ auto session = Catch::Session{};
+
+ if (auto result = session.applyCommandLine(argc, argv); result != 0)
+ {
+ return result;
+ }
+
+ auto const & config = session.configData();
+ auto skip_init = config.listTests || //
+ config.listTags || //
+ config.listReporters || //
+ config.listListeners || //
+ config.showHelp;
+
+ if (!skip_init)
+ {
+ kapi::cio::init();
+ kapi::cpu::init();
+ kapi::interrupts::enable();
+
+ kapi::memory::init();
+ // note: no kernel heap is created, since we are in the test environment. Nonetheless, we still initialize the
+ // memory subsystem, so that components that rely on it can be tested. No component must ever rely on the heap
+ // allocator directly, rather they have to go through the new and delete. However, some components may use the frame
+ // allocator and page mapper in order to perform their tasks.
+ }
+
+ return session.run();
+}