From d012735c6e072e31a8ca39bd0901923754f65738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Mon, 15 Nov 2021 20:05:12 +0100 Subject: [PATCH] Add test for runtime behaviour of STATIC_CHECK --- tests/ExtraTests/CMakeLists.txt | 11 ++++++++++ tests/ExtraTests/X05-DeferredStaticChecks.cpp | 22 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/ExtraTests/X05-DeferredStaticChecks.cpp diff --git a/tests/ExtraTests/CMakeLists.txt b/tests/ExtraTests/CMakeLists.txt index 7efa7721..f7e9ec18 100644 --- a/tests/ExtraTests/CMakeLists.txt +++ b/tests/ExtraTests/CMakeLists.txt @@ -151,6 +151,17 @@ set_tests_properties( ) +add_executable(DeferredStaticChecks ${TESTS_DIR}/X05-DeferredStaticChecks.cpp) +target_link_libraries(DeferredStaticChecks PRIVATE Catch2WithMain) +target_compile_definitions(DeferredStaticChecks PRIVATE "CATCH_CONFIG_RUNTIME_STATIC_REQUIRE") + +add_test(NAME DeferredStaticChecks COMMAND DeferredStaticChecks -r compact) +set_tests_properties( + DeferredStaticChecks + PROPERTIES + PASS_REGULAR_EXPRESSION "Failed 1 test case, failed all 3 assertions." +) + add_executable(FallbackStringifier ${TESTS_DIR}/X10-FallbackStringifier.cpp) target_compile_definitions( FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier ) diff --git a/tests/ExtraTests/X05-DeferredStaticChecks.cpp b/tests/ExtraTests/X05-DeferredStaticChecks.cpp new file mode 100644 index 00000000..a09ed1cc --- /dev/null +++ b/tests/ExtraTests/X05-DeferredStaticChecks.cpp @@ -0,0 +1,22 @@ + +// Copyright Catch2 Authors +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// https://www.boost.org/LICENSE_1_0.txt) + +// SPDX-License-Identifier: BSL-1.0 + +/**\file + * Checks that when `STATIC_CHECK` is deferred to runtime and fails, it + * does not abort the test case. + */ + +#include +#include + +TEST_CASE("Deferred static checks") { + STATIC_CHECK(1 == 2); + STATIC_CHECK_FALSE(1 != 2); + // This last assertion must be executed too + CHECK(1 == 2); +}