diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 12:15:25 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 12:15:25 +0200 |
| commit | 1f652b8b5ca5dbea588975466801cb1479f3dda8 (patch) | |
| tree | 2852f1d7cc6d33d0cb06c66fcfcf8c03dac2a112 /kernel/src/main.tests.cpp | |
| parent | 0369fb7c4baa543dfb36ebb39ab53ac7560994ba (diff) | |
| download | teachos-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.cpp | 38 |
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(); +} |
