CppUnit project page FAQ CppUnit home page

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CompilerOutputter Class Reference
[Writing test result]

Outputs a TestResultCollector in a compiler compatible format. More...

#include <CompilerOutputter.h>

Inheritance diagram for CompilerOutputter:

Outputter List of all members.

Public Member Functions

 CompilerOutputter (TestResultCollector *result, OStream &stream, const std::string &locationFormat=CPPUNIT_COMPILER_LOCATION_FORMAT)
 Constructs a CompilerOutputter object.
virtual ~CompilerOutputter ()
 Destructor.
void setLocationFormat (const std::string &locationFormat)
 Sets the error location format.
void write ()
void setNoWrap ()
void setWrapColumn (int wrapColumn)
int wrapColumn () const
virtual void printSuccess ()
virtual void printFailureReport ()
virtual void printFailuresList ()
virtual void printStatistics ()
virtual void printFailureDetail (TestFailure *failure)
virtual void printFailureLocation (SourceLine sourceLine)
virtual void printFailureType (TestFailure *failure)
virtual void printFailedTestName (TestFailure *failure)
virtual void printFailureMessage (TestFailure *failure)

Static Public Member Functions

static CompilerOutputterdefaultOutputter (TestResultCollector *result, OStream &stream)
 Creates an instance of an outputter that matches your current compiler.

Private Member Functions

 CompilerOutputter (const CompilerOutputter &copy)
 Prevents the use of the copy constructor.
void operator= (const CompilerOutputter &copy)
 Prevents the use of the copy operator.
virtual bool processLocationFormatCommand (char command, const SourceLine &sourceLine)
virtual std::string extractBaseName (const std::string &fileName) const

Private Attributes

TestResultCollectorm_result
OStreamm_stream
std::string m_locationFormat
int m_wrapColumn

Detailed Description

Outputs a TestResultCollector in a compiler compatible format.

Printing the test results in a compiler compatible format (assertion location has the same format as compiler error), allow you to use your IDE to jump to the assertion failure. Location format can be customized (see setLocationFormat() ).

For example, when running the test in a post-build with VC++, if an assertion fails, you can jump to the assertion by pressing F4 (jump to next error).

Heres is an example of usage (from examples/cppunittest/CppUnitTestMain.cpp):

 int main( int argc, char* argv[] ) {
   // if command line contains "-selftest" then this is the post build check
   // => the output must be in the compiler error format.
   bool selfTest = (argc > 1)  &&  
                   (std::string("-selftest") == argv[1]);

   CppUnit::TextUi::TestRunner runner;
   runner.addTest( CppUnitTest::suite() );   // Add the top suite to the test runner
 
  if ( selfTest )
   { // Change the default outputter to a compiler error format outputter
     // The test runner owns the new outputter.
     runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
                                                          std::cerr ) );
   }
 
  // Run the test and don't wait a key if post build check.
   bool wasSuccessful = runner.run( "", !selfTest );
 
   // Return error code 1 if the one of test failed.
   return wasSuccessful ? 0 : 1;
 }


Constructor & Destructor Documentation

CPPUNIT_NS_BEGIN CompilerOutputter::CompilerOutputter TestResultCollector result,
OStream stream,
const std::string &  locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT
 

Constructs a CompilerOutputter object.

Parameters:
result Result of the test run.
stream Stream used to output test result.
locationFormat Error location format used by your compiler. Default to CPPUNIT_COMPILER_LOCATION_FORMAT which is defined in the configuration file. See setLocationFormat() for detail.
See also:
setLocationFormat().

CompilerOutputter::~CompilerOutputter  )  [virtual]
 

Destructor.

CompilerOutputter::CompilerOutputter const CompilerOutputter copy  )  [private]
 

Prevents the use of the copy constructor.


Member Function Documentation

CompilerOutputter * CompilerOutputter::defaultOutputter TestResultCollector result,
OStream stream
[static]
 

Creates an instance of an outputter that matches your current compiler.

Deprecated:
This class is specialized through parameterization instead of subclassing... Use CompilerOutputter::CompilerOutputter instead.

std::string CompilerOutputter::extractBaseName const std::string &  fileName  )  const [private, virtual]
 

void CompilerOutputter::operator= const CompilerOutputter copy  )  [private]
 

Prevents the use of the copy operator.

void CompilerOutputter::printFailedTestName TestFailure failure  )  [virtual]
 

void CompilerOutputter::printFailureDetail TestFailure failure  )  [virtual]
 

void CompilerOutputter::printFailureLocation SourceLine  sourceLine  )  [virtual]
 

void CompilerOutputter::printFailureMessage TestFailure failure  )  [virtual]
 

void CompilerOutputter::printFailureReport  )  [virtual]
 

void CompilerOutputter::printFailuresList  )  [virtual]
 

void CompilerOutputter::printFailureType TestFailure failure  )  [virtual]
 

void CompilerOutputter::printStatistics  )  [virtual]
 

void CompilerOutputter::printSuccess  )  [virtual]
 

bool CompilerOutputter::processLocationFormatCommand char  command,
const SourceLine sourceLine
[private, virtual]
 

void CompilerOutputter::setLocationFormat const std::string &  locationFormat  ) 
 

Sets the error location format.

Indicates the format used to report location of failed assertion. This format should match the one used by your compiler.

The location format is a string in which the occurence of the following character sequence are replaced:

  • "%l" => replaced by the line number
  • "%p" => replaced by the full path name of the file ("G:\prg\vc\cppunit\MyTest.cpp")
  • "%f" => replaced by the base name of the file ("MyTest.cpp")

Some examples:

  • VC++ error location format: "%p(%l):" => produce "G:\prg\MyTest.cpp(43):"
  • GCC error location format: "%f:%l:" => produce "MyTest.cpp(43):"

Thoses are the two compilers currently supported (gcc format is used if VC++ is not detected). If you want your compiler to be automatically supported by CppUnit, send a mail to the mailing list (preferred), or submit a feature request that indicates how to detect your compiler with the preprocessor (#ifdef...) and your compiler location format.

void CompilerOutputter::setNoWrap  ) 
 

void CompilerOutputter::setWrapColumn int  wrapColumn  ) 
 

int CompilerOutputter::wrapColumn  )  const
 

void CompilerOutputter::write  )  [virtual]
 

Implements Outputter.


Member Data Documentation

std::string CompilerOutputter::m_locationFormat [private]
 

TestResultCollector* CompilerOutputter::m_result [private]
 

OStream& CompilerOutputter::m_stream [private]
 

int CompilerOutputter::m_wrapColumn [private]
 


The documentation for this class was generated from the following files:
SourceForge Logo hosts this site. Send comments to:
CppUnit Developers