/** * @file CatchRunner.cpp * @brief Source file to compile catch framework. * @details All tests should be written in other files. * For eclipse console output, install ANSI Escape in Console * from the eclipse market place to get colored characters. */ #include "CatchRunner.h" #define CATCH_CONFIG_COLOUR_WINDOWS #include #include #ifdef FSFW_OSAL_FREERTOS #include #include "task.h" #endif extern int customSetup(); extern int customTeardown(); #ifdef FSFW_OSAL_FREERTOS struct Taskparameters { int argc; char** argv; TaskHandle_t catchTask; } taskParameters; void unittestTaskFunction(void* pvParameters) { Taskparameters* parameters = (Taskparameters*)pvParameters; int result = Catch::Session().run(parameters->argc, parameters->argv); vTaskDelay(pdMS_TO_TICKS(10)); vTaskSuspendAll(); vTaskDelete(parameters->catchTask); customTeardown(); exit(result); } #endif int main(int argc, char* argv[]) { customSetup(); int result = 0; #ifdef FSFW_OSAL_FREERTOS xTaskCreate( unittestTaskFunction, /* The function that implements the task. */ "Unittests", /* The text name assigned to the task - for debug only as it is not used by the kernel. */ configMINIMAL_STACK_SIZE, /* The size of the stack to allocate to the task. */ &taskParameters, /* The parameter passed to the task - not used in this simple case. */ 1, /* The priority assigned to the task. */ &taskParameters.catchTask); /* The task handle is not required, so NULL is passed. */ taskParameters.argc = argc; taskParameters.argv = argv; vTaskStartScheduler(); #else // Catch internal function call result = Catch::Session().run(argc, argv); #endif // global clean-up customTeardown(); return result; }