|
Packit Service |
e31359 |
#include <cppunit/config/SourcePrefix.h>
|
|
Packit Service |
e31359 |
#include <cppunit/Exception.h>
|
|
Packit Service |
e31359 |
#include <cppunit/SourceLine.h>
|
|
Packit Service |
e31359 |
#include <cppunit/TestFailure.h>
|
|
Packit Service |
e31359 |
#include <cppunit/TestResultCollector.h>
|
|
Packit Service |
e31359 |
#include <cppunit/CompilerOutputter.h>
|
|
Packit Service |
e31359 |
#include <algorithm>
|
|
Packit Service |
e31359 |
#include <cppunit/tools/StringTools.h>
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
CPPUNIT_NS_BEGIN
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
CompilerOutputter::CompilerOutputter( TestResultCollector *result,
|
|
Packit Service |
e31359 |
OStream &stream,
|
|
Packit Service |
e31359 |
const std::string &locationFormat )
|
|
Packit Service |
e31359 |
: m_result( result )
|
|
Packit Service |
e31359 |
, m_stream( stream )
|
|
Packit Service |
e31359 |
, m_locationFormat( locationFormat )
|
|
Packit Service |
e31359 |
, m_wrapColumn( CPPUNIT_WRAP_COLUMN )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
CompilerOutputter::~CompilerOutputter()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::setLocationFormat( const std::string &locationFormat )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_locationFormat = locationFormat;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
CompilerOutputter *
|
|
Packit Service |
e31359 |
CompilerOutputter::defaultOutputter( TestResultCollector *result,
|
|
Packit Service |
e31359 |
OStream &stream )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
return new CompilerOutputter( result, stream );
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::write()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
if ( m_result->wasSuccessful() )
|
|
Packit Service |
e31359 |
printSuccess();
|
|
Packit Service |
e31359 |
else
|
|
Packit Service |
e31359 |
printFailureReport();
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printSuccess()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_stream << "OK (" << m_result->runTests() << ")\n";
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailureReport()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
printFailuresList();
|
|
Packit Service |
e31359 |
printStatistics();
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailuresList()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
for ( int index =0; index < m_result->testFailuresTotal(); ++index)
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
printFailureDetail( m_result->failures()[ index ] );
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailureDetail( TestFailure *failure )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
printFailureLocation( failure->sourceLine() );
|
|
Packit Service |
e31359 |
printFailureType( failure );
|
|
Packit Service |
e31359 |
printFailedTestName( failure );
|
|
Packit Service |
e31359 |
printFailureMessage( failure );
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailureLocation( SourceLine sourceLine )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
if ( !sourceLine.isValid() )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_stream << "##Failure Location unknown## : ";
|
|
Packit Service |
e31359 |
return;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
std::string location;
|
|
Packit Service |
e31359 |
for ( unsigned int index = 0; index < m_locationFormat.length(); ++index )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
char c = m_locationFormat[ index ];
|
|
Packit Service |
e31359 |
if ( c == '%' && ( index+1 < m_locationFormat.length() ) )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
char command = m_locationFormat[index+1];
|
|
Packit Service |
e31359 |
if ( processLocationFormatCommand( command, sourceLine ) )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
++index;
|
|
Packit Service |
e31359 |
continue;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
m_stream << c;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
bool
|
|
Packit Service |
e31359 |
CompilerOutputter::processLocationFormatCommand( char command,
|
|
Packit Service |
e31359 |
const SourceLine &sourceLine )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
switch ( command )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
case 'p':
|
|
Packit Service |
e31359 |
m_stream << sourceLine.fileName();
|
|
Packit Service |
e31359 |
return true;
|
|
Packit Service |
e31359 |
case 'l':
|
|
Packit Service |
e31359 |
m_stream << sourceLine.lineNumber();
|
|
Packit Service |
e31359 |
return true;
|
|
Packit Service |
e31359 |
case 'f':
|
|
Packit Service |
e31359 |
m_stream << extractBaseName( sourceLine.fileName() );
|
|
Packit Service |
e31359 |
return true;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
return false;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
std::string
|
|
Packit Service |
e31359 |
CompilerOutputter::extractBaseName( const std::string &fileName ) const
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
int indexLastDirectorySeparator = fileName.find_last_of( '/' );
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
if ( indexLastDirectorySeparator < 0 )
|
|
Packit Service |
e31359 |
indexLastDirectorySeparator = fileName.find_last_of( '\\' );
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
if ( indexLastDirectorySeparator < 0 )
|
|
Packit Service |
e31359 |
return fileName;
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
return fileName.substr( indexLastDirectorySeparator +1 );
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailureType( TestFailure *failure )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_stream << (failure->isError() ? "Error" : "Assertion");
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailedTestName( TestFailure *failure )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_stream << "\nTest name: " << failure->failedTestName();
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printFailureMessage( TestFailure *failure )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_stream << "\n";
|
|
Packit Service |
e31359 |
Exception *thrownException = failure->thrownException();
|
|
Packit Service |
e31359 |
m_stream << thrownException->message().shortDescription() << "\n";
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
std::string message = thrownException->message().details();
|
|
Packit Service |
e31359 |
if ( m_wrapColumn > 0 )
|
|
Packit Service |
e31359 |
message = StringTools::wrap( message, m_wrapColumn );
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
m_stream << message << "\n";
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::printStatistics()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_stream << "Failures !!!\n";
|
|
Packit Service |
e31359 |
m_stream << "Run: " << m_result->runTests() << " "
|
|
Packit Service |
e31359 |
<< "Failure total: " << m_result->testFailuresTotal() << " "
|
|
Packit Service |
e31359 |
<< "Failures: " << m_result->testFailures() << " "
|
|
Packit Service |
e31359 |
<< "Errors: " << m_result->testErrors()
|
|
Packit Service |
e31359 |
<< "\n";
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::setWrapColumn( int wrapColumn )
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_wrapColumn = wrapColumn;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
void
|
|
Packit Service |
e31359 |
CompilerOutputter::setNoWrap()
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
m_wrapColumn = 0;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
int
|
|
Packit Service |
e31359 |
CompilerOutputter::wrapColumn() const
|
|
Packit Service |
e31359 |
{
|
|
Packit Service |
e31359 |
return m_wrapColumn;
|
|
Packit Service |
e31359 |
}
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
|
|
Packit Service |
e31359 |
CPPUNIT_NS_END
|