// 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 #include #include #include #include #include #include #include #include #include #include #include namespace Catch { ReporterRegistry::ReporterRegistry() { // Because it is impossible to move out of initializer list, // we have to add the elements manually m_factories["Automake"] = Detail::make_unique>(); m_factories["compact"] = Detail::make_unique>(); m_factories["console"] = Detail::make_unique>(); m_factories["JUnit"] = Detail::make_unique>(); m_factories["SonarQube"] = Detail::make_unique>(); m_factories["TAP"] = Detail::make_unique>(); m_factories["TeamCity"] = Detail::make_unique>(); m_factories["XML"] = Detail::make_unique>(); } ReporterRegistry::~ReporterRegistry() = default; IStreamingReporterPtr ReporterRegistry::create( std::string const& name, ReporterConfig const& config ) const { auto it = m_factories.find( name ); if( it == m_factories.end() ) return nullptr; return it->second->create( config ); } void ReporterRegistry::registerReporter( std::string const& name, IReporterFactoryPtr factory ) { m_factories.emplace(name, CATCH_MOVE(factory)); } void ReporterRegistry::registerListener( IReporterFactoryPtr factory ) { m_listeners.push_back( CATCH_MOVE(factory) ); } IReporterRegistry::FactoryMap const& ReporterRegistry::getFactories() const { return m_factories; } IReporterRegistry::Listeners const& ReporterRegistry::getListeners() const { return m_listeners; } }