diff options
| -rw-r--r-- | cmake/utils/DisableTestLogging.cmake | 10 | ||||
| -rw-r--r-- | include/test/test.h | 8 |
2 files changed, 17 insertions, 1 deletions
diff --git a/cmake/utils/DisableTestLogging.cmake b/cmake/utils/DisableTestLogging.cmake index 730b0bc0..a7e90b38 100644 --- a/cmake/utils/DisableTestLogging.cmake +++ b/cmake/utils/DisableTestLogging.cmake @@ -5,8 +5,18 @@ else () message(STATUS "Ouroboros logging in test output enabled") endif () +set(DISABLE_TESTS_CORE_DUMPS TRUE CACHE BOOL "Enable core dumps for tests (useful for debugging)") +if (DISABLE_TESTS_CORE_DUMPS) + message(STATUS "Core dumps in tests enabled") +else () + message(STATUS "Core dumps in tests disabled") +endif () + macro(disable_test_logging_for_target target) if (DISABLE_TESTS_LOGGING) target_compile_definitions(${target} PRIVATE OUROBOROS_DISABLE_LOGGING) endif () + if (DISABLE_TESTS_CORE_DUMPS) + target_compile_definitions(${target} PRIVATE DISABLE_TESTS_CORE_DUMPS) + endif () endmacro() diff --git a/include/test/test.h b/include/test/test.h index b524d8ec..306e737a 100644 --- a/include/test/test.h +++ b/include/test/test.h @@ -29,6 +29,7 @@ #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> +#include <sys/resource.h> #define TEST_RC_SUCCESS 0 #define TEST_RC_SKIP 1 @@ -81,8 +82,13 @@ static int __attribute__((unused)) test_assert_fail(int(* testfunc)(void)) return TEST_RC_FAIL; } - if (pid == 0) + if (pid == 0) { +#ifdef DISABLE_TESTS_CORE_DUMPS + struct rlimit rl = { .rlim_cur = 0, .rlim_max = 0 }; + setrlimit(RLIMIT_CORE, &rl); +#endif return testfunc(); /* should abort */ + } waitpid(pid, &wstatus, 0); #ifdef CONFIG_OUROBOROS_DEBUG |
