diff --git a/CMakeScripts/UnitTest.cmake b/CMakeScripts/UnitTest.cmake index e2968e69edabf178815471a820c19220c5f062b1..1fdaf12e73e86dfe629640b6bd60ac16ff738edc 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 5e50cd251aa52697b1f2d0af9a972c7cb07137bb..e49cd339751c4e71a25b63b2eb6477ec55b653c6 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 0000000000000000000000000000000000000000..7df0e2f0e5e9c42629feec3ad29b1abce2b422c6 --- /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