mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-01 21:05:39 +02:00
Properly handle startup reporter registration errors
This commit is contained in:
@@ -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)
|
||||
|
31
tests/ExtraTests/X35-DuplicatedReporterNames.cpp
Normal file
31
tests/ExtraTests/X35-DuplicatedReporterNames.cpp
Normal 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 )
|
Reference in New Issue
Block a user