summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/utils/DisableTestLogging.cmake10
-rw-r--r--include/test/test.h8
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