Passthrough stdout/err in multireporter's partial test end

This should provide the same overall stdout/err, but the new
output should feel "faster" for test cases that are entered
and exited multiple times (e.g. due to generators).
This commit is contained in:
Martin Hořeňovský 2021-12-31 16:24:55 +01:00
parent 93882f7fab
commit b5547f2ef6

View File

@ -136,21 +136,22 @@ namespace Catch {
void ListeningReporter::testCasePartialEnded( TestCaseStats const& testStats, void ListeningReporter::testCasePartialEnded( TestCaseStats const& testStats,
uint64_t partNumber ) { uint64_t partNumber ) {
// TODO: Fix handling of stderr/stdout? if ( m_preferences.shouldRedirectStdOut &&
m_haveNoncapturingReporters ) {
if ( !testStats.stdOut.empty() ) {
Catch::cout() << testStats.stdOut << std::flush;
}
if ( !testStats.stdErr.empty() ) {
Catch::cerr() << testStats.stdErr << std::flush;
}
}
for ( auto& reporterish : m_reporterLikes ) { for ( auto& reporterish : m_reporterLikes ) {
reporterish->testCasePartialEnded( testStats, partNumber ); reporterish->testCasePartialEnded( testStats, partNumber );
} }
} }
void ListeningReporter::testCaseEnded( TestCaseStats const& testCaseStats ) { void ListeningReporter::testCaseEnded( TestCaseStats const& testCaseStats ) {
if ( m_preferences.shouldRedirectStdOut && m_haveNoncapturingReporters ) {
if ( !testCaseStats.stdOut.empty() ) {
Catch::cout() << testCaseStats.stdOut << std::flush;
}
if ( !testCaseStats.stdErr.empty() ) {
Catch::cerr() << testCaseStats.stdErr << std::flush;
}
}
for ( auto& reporterish : m_reporterLikes ) { for ( auto& reporterish : m_reporterLikes ) {
reporterish->testCaseEnded( testCaseStats ); reporterish->testCaseEnded( testCaseStats );
} }