#define DOCTEST_CONFIG_IMPLEMENT #include "doctest.h" #include #include #include #include #include typedef struct { int argc; char** argv; int result; } TestTaskData; // From the relevant platform extern "C" struct Module platform_posix_module; void test_task(void* parameter) { auto* data = (TestTaskData*)parameter; doctest::Context context; context.applyCommandLine(data->argc, data->argv); // overrides context.setOption("no-breaks", true); // don't break in the debugger when assertions fail Module* dts_modules[] = { &platform_posix_module, nullptr }; DtsDevice dts_devices[] = { DTS_DEVICE_TERMINATOR }; check(kernel_init(dts_modules, dts_devices) == ERROR_NONE); data->result = context.run(); vTaskEndScheduler(); vTaskDelete(nullptr); } int main(int argc, char** argv) { TestTaskData data = { .argc = argc, .argv = argv, .result = 0 }; BaseType_t task_result = xTaskCreate( test_task, "test_task", 8192, &data, 1, nullptr ); assert(task_result == pdPASS); vTaskStartScheduler(); return data.result; }