Fix lazy removal of unscoped messages also removing still valid msgs

This commit is contained in:
Martin Hořeňovský
2025-11-30 12:56:06 +01:00
parent a1faad9315
commit 985a3f4460
21 changed files with 222 additions and 18 deletions

View File

@@ -177,6 +177,18 @@ set_tests_properties(DeferredStaticChecks
PASS_REGULAR_EXPRESSION "test cases: 1 \\| 1 failed\nassertions: 3 \\| 3 failed"
)
add_executable(MixingClearedAndUnclearedMessages ${TESTS_DIR}/X06-MixingClearedAndUnclearedMessages.cpp)
target_link_libraries(MixingClearedAndUnclearedMessages PRIVATE Catch2WithMain)
add_test(NAME MixingClearedAndUnclearedMessages
COMMAND
MixingClearedAndUnclearedMessages
-r compact)
set_tests_properties(MixingClearedAndUnclearedMessages
PROPERTIES
PASS_REGULAR_EXPRESSION ": false with 1 message: 'b'"
)
add_executable(FallbackStringifier ${TESTS_DIR}/X10-FallbackStringifier.cpp)
target_compile_definitions(FallbackStringifier PRIVATE CATCH_CONFIG_FALLBACK_STRINGIFIER=fallbackStringifier)
target_link_libraries(FallbackStringifier Catch2WithMain)
@@ -528,6 +540,7 @@ set(EXTRA_TEST_BINARIES
DuplicatedTestCases-DuplicatedTestCaseMethods
NoTests
ListenersGetEventsBeforeReporters
MixingClearedAndUnclearedMessages
# DebugBreakMacros
)

View File

@@ -0,0 +1,27 @@
// Copyright Catch2 Authors
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
// SPDX-License-Identifier: BSL-1.0
/**\file
* Checks that when we use up an unscoped message (e.g. `UNSCOPED_INFO`),
* with an assertion, and then add another message later, it will be
* properly reported with later failing assertion.
*
* This needs separate binary to avoid the main test binary's validating
* listener, which disables the assertion fast path.
*/
#include <catch2/catch_test_macros.hpp>
TEST_CASE(
"Delayed unscoped message clearing does not catch newly inserted messages",
"[messages][unscoped][!shouldfail]" ) {
UNSCOPED_INFO( "a" );
REQUIRE( true );
UNSCOPED_INFO( "b" );
REQUIRE( false );
}