RuntimeModules (a feature for extensions) can be accessed by core modules through a registry exposed in Context by Kernel. However, TestKernel was not exposing this same registry which caused an error when module installation occurred during tests.
Backend Tools Directory
Test Kernel
The Test Kernel is a drop-in replacement for Puter's main kernel. Instead of actually initializing and running services, it only registers them and then invokes a test iterator through all the services.
The Test Kernel is ideal for running unit and integration tests against individual services, ensuring they behave correctly.
Test Kernel Notes
-
Logging:
A customTestLoggeris provided for simplified logging output during tests. Since LogService is never initialized, this is never replaced. -
Context Management:
The Test Kernel uses the sameContextsystem as the main Kernel. This gives test environments a consistent way to access global state, configuration, and service containers. -
Assertion & Results Tracking:
The Test Kernel includes a simple testing structure that:- Tracks passed and failed assertions.
- Repeats assertion outputs at the end of test runs for clarity.
- Allows specifying which services to test via command-line arguments.
Typical Workflow
-
Initialization:
Instantiate the Test Kernel, and add any modules you want to test. -
Module Installation:
The Test Kernel installs these modules (via_install_modules()), making their services available in theContainer. -
Service Testing:
After modules are installed, each service can be constructed and tested. Tests are implemented as_test()methods on services, using simple assertion helpers (testapi.assertandtestapi.assert.equal). -
Result Summarization:
Once all tests run, the Test Kernel prints a summary of passed and failed assertions, aiding quick evaluation of test outcomes.