Properly handle startup reporter registration errors

This commit is contained in:
Martin Hořeňovský
2022-05-15 10:35:07 +02:00
parent 33aeb603fe
commit 316025a0d8
5 changed files with 105 additions and 13 deletions

View File

@@ -421,6 +421,20 @@ set_tests_properties(
FAIL_REGULAR_EXPRESSION "error: .* already defined\\."
)
add_executable(DuplicatedReporters ${TESTS_DIR}/X35-DuplicatedReporterNames.cpp)
target_link_libraries(DuplicatedReporters PRIVATE Catch2::Catch2WithMain)
add_test(
NAME Reporters::RegistrationErrorsAreCaught
COMMAND $<TARGET_FILE:DuplicatedReporters>
)
set_tests_properties(
Reporters::RegistrationErrorsAreCaught
PROPERTIES
PASS_REGULAR_EXPRESSION "Errors occurred during startup!"
)
#add_executable(DebugBreakMacros ${TESTS_DIR}/X12-CustomDebugBreakMacro.cpp)
#target_link_libraries(DebugBreakMacros Catch2)
#add_test(NAME DebugBreakMacros COMMAND DebugBreakMacros --break)

View File

@@ -0,0 +1,31 @@
// 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 reporter registration errors are caught and handled as
* startup errors, by causing a registration error by registering multiple
* reporters with the same name.
*/
#include <catch2/catch_test_macros.hpp>
#include <catch2/reporters/catch_reporter_registrars.hpp>
#include <catch2/reporters/catch_reporter_streaming_base.hpp>
namespace {
//! Trivial custom reporter for registration
class TestReporter : public Catch::StreamingReporterBase {
public:
using StreamingReporterBase::StreamingReporterBase;
static std::string getDescription() { return "X35 test reporter"; }
};
}
CATCH_REGISTER_REPORTER( "test-reporter", TestReporter )
CATCH_REGISTER_REPORTER( "test-reporter", TestReporter )