Also generalized the implementations to write to the provided output stream, which will be required for the follow up changes, where the listings should happen to the location user asked for by specifying the `-o` flag.
128 lines
4.6 KiB
C++
128 lines
4.6 KiB
C++
|
|
// 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 <catch2/interfaces/catch_interfaces_reporter.hpp>
|
|
#include <catch2/interfaces/catch_interfaces_config.hpp>
|
|
#include <catch2/internal/catch_console_colour.hpp>
|
|
#include <catch2/internal/catch_console_width.hpp>
|
|
#include <catch2/catch_message.hpp>
|
|
#include <catch2/internal/catch_list.hpp>
|
|
#include <catch2/internal/catch_string_manip.hpp>
|
|
#include <catch2/catch_test_case_info.hpp>
|
|
#include <catch2/reporters/catch_reporter_helpers.hpp>
|
|
|
|
#include <algorithm>
|
|
#include <iomanip>
|
|
|
|
namespace Catch {
|
|
|
|
ReporterConfig::ReporterConfig( IConfig const* _fullConfig )
|
|
: m_stream( &_fullConfig->stream() ), m_fullConfig( _fullConfig ) {}
|
|
|
|
ReporterConfig::ReporterConfig( IConfig const* _fullConfig, std::ostream& _stream )
|
|
: m_stream( &_stream ), m_fullConfig( _fullConfig ) {}
|
|
|
|
std::ostream& ReporterConfig::stream() const { return *m_stream; }
|
|
IConfig const * ReporterConfig::fullConfig() const { return m_fullConfig; }
|
|
|
|
|
|
TestRunInfo::TestRunInfo( std::string const& _name ) : name( _name ) {}
|
|
|
|
GroupInfo::GroupInfo( std::string const& _name,
|
|
std::size_t _groupIndex,
|
|
std::size_t _groupsCount )
|
|
: name( _name ),
|
|
groupIndex( _groupIndex ),
|
|
groupsCounts( _groupsCount )
|
|
{}
|
|
|
|
AssertionStats::AssertionStats( AssertionResult const& _assertionResult,
|
|
std::vector<MessageInfo> const& _infoMessages,
|
|
Totals const& _totals )
|
|
: assertionResult( _assertionResult ),
|
|
infoMessages( _infoMessages ),
|
|
totals( _totals )
|
|
{
|
|
assertionResult.m_resultData.lazyExpression.m_transientExpression = _assertionResult.m_resultData.lazyExpression.m_transientExpression;
|
|
|
|
if( assertionResult.hasMessage() ) {
|
|
// Copy message into messages list.
|
|
// !TBD This should have been done earlier, somewhere
|
|
MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() );
|
|
builder << assertionResult.getMessage();
|
|
builder.m_info.message = builder.m_stream.str();
|
|
|
|
infoMessages.push_back( builder.m_info );
|
|
}
|
|
}
|
|
|
|
SectionStats::SectionStats( SectionInfo const& _sectionInfo,
|
|
Counts const& _assertions,
|
|
double _durationInSeconds,
|
|
bool _missingAssertions )
|
|
: sectionInfo( _sectionInfo ),
|
|
assertions( _assertions ),
|
|
durationInSeconds( _durationInSeconds ),
|
|
missingAssertions( _missingAssertions )
|
|
{}
|
|
|
|
|
|
TestCaseStats::TestCaseStats( TestCaseInfo const& _testInfo,
|
|
Totals const& _totals,
|
|
std::string const& _stdOut,
|
|
std::string const& _stdErr,
|
|
bool _aborting )
|
|
: testInfo( &_testInfo ),
|
|
totals( _totals ),
|
|
stdOut( _stdOut ),
|
|
stdErr( _stdErr ),
|
|
aborting( _aborting )
|
|
{}
|
|
|
|
|
|
TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo,
|
|
Totals const& _totals,
|
|
bool _aborting )
|
|
: groupInfo( _groupInfo ),
|
|
totals( _totals ),
|
|
aborting( _aborting )
|
|
{}
|
|
|
|
TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo )
|
|
: groupInfo( _groupInfo ),
|
|
aborting( false )
|
|
{}
|
|
|
|
|
|
TestRunStats::TestRunStats( TestRunInfo const& _runInfo,
|
|
Totals const& _totals,
|
|
bool _aborting )
|
|
: runInfo( _runInfo ),
|
|
totals( _totals ),
|
|
aborting( _aborting )
|
|
{}
|
|
|
|
void IStreamingReporter::fatalErrorEncountered( StringRef ) {}
|
|
|
|
void IStreamingReporter::listReporters(std::vector<ReporterDescription> const& descriptions) {
|
|
defaultListReporters(
|
|
Catch::cout(), descriptions, m_config->verbosity() );
|
|
}
|
|
|
|
void IStreamingReporter::listTests(std::vector<TestCaseHandle> const& tests) {
|
|
defaultListTests( Catch::cout(),
|
|
tests,
|
|
m_config->hasTestFilters(),
|
|
m_config->verbosity() );
|
|
}
|
|
|
|
void IStreamingReporter::listTags(std::vector<TagInfo> const& tags) {
|
|
defaultListTags( Catch::cout(), tags, m_config->hasTestFilters() );
|
|
}
|
|
|
|
} // end namespace Catch
|