From 8d057c8c893f3b4b4f8f26adf0d0906957132bb7 Mon Sep 17 00:00:00 2001 From: Rafael Siejakowski Date: Sun, 25 May 2025 12:06:12 +0200 Subject: [PATCH] Arm assertions and enable Sanitizer in tests Build all unit tests in Debug mode even when the project is in Release mode in order to arm the debug assertions. Always use the address sanitizer (ASAN) in unit tests. --- CMakeScripts/UnitTest.cmake | 5 +++++ testfiles/CMakeLists.txt | 1 + testfiles/src/assertions-in-tests.cpp | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 testfiles/src/assertions-in-tests.cpp diff --git a/CMakeScripts/UnitTest.cmake b/CMakeScripts/UnitTest.cmake index e2968e69ed..1fdaf12e73 100644 --- a/CMakeScripts/UnitTest.cmake +++ b/CMakeScripts/UnitTest.cmake @@ -22,6 +22,11 @@ function(add_unit_test test_name) add_executable(${test_name} src/${test_name}.cpp ${test_sources}) target_include_directories(${test_name} SYSTEM PRIVATE ${GTEST_INCLUDE_DIRS}) + + target_compile_definitions(${test_name} PRIVATE "-D_GLIBCXX_ASSERTIONS") + target_compile_options(${test_name} PRIVATE "-fsanitize=address" "-fno-omit-frame-pointer" "-UNDEBUG") + target_link_options(${test_name} PRIVATE "-fsanitize=address") + target_link_libraries(${test_name} GTest::gtest GTest::gmock GTest::gmock_main ${ARG_EXTRA_LIBS}) add_test(NAME ${test_name} COMMAND ${test_name}) add_dependencies(unit_tests ${test_name} ${ARG_EXTRA_LIBS}) diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index 5e50cd251a..e49cd33975 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -157,6 +157,7 @@ endforeach() include(${CMAKE_SOURCE_DIR}/CMakeScripts/UnitTest.cmake) ### Unit tests +add_unit_test(assertions-in-tests) add_unit_test(version-test SOURCES version.cpp) add_unit_test(css-syntactic-decomposition-test SOURCES "css/syntactic-decomposition.cpp" EXTRA_LIBS croco_LIB) add_dependencies(tests unit_tests) diff --git a/testfiles/src/assertions-in-tests.cpp b/testfiles/src/assertions-in-tests.cpp new file mode 100644 index 0000000000..7df0e2f0e5 --- /dev/null +++ b/testfiles/src/assertions-in-tests.cpp @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * Authors: + * RafaƂ Siejakowski + * + * @copyright + * Copyright (C) 2025 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include + +namespace { +void failing_assertion_function() { + assert(false); +} +} + +/// Ensure that a failed assertion crashes a test +TEST(TechicalTestSuiteTest, AssertionsArmedInTests) { + EXPECT_DEATH(failing_assertion_function(), ".*"); +} \ No newline at end of file -- GitLab