// 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 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, IConfig const* config ) const { auto it = m_factories.find( name ); if( it == m_factories.end() ) return nullptr; return it->second->create( ReporterConfig( config ) ); } void ReporterRegistry::registerReporter( std::string const& name, IReporterFactoryPtr factory ) { m_factories.emplace(name, std::move(factory)); } void ReporterRegistry::registerListener( IReporterFactoryPtr factory ) { m_listeners.push_back( std::move(factory) ); } IReporterRegistry::FactoryMap const& ReporterRegistry::getFactories() const { return m_factories; } IReporterRegistry::Listeners const& ReporterRegistry::getListeners() const { return m_listeners; } }