From f717d7a113969cc85b638f0bbdf7661323d8ad00 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sat, 24 May 2014 10:34:11 +0200 Subject: [PATCH] Better test result output --- alib2/test-src/main.cpp | 87 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 84 insertions(+), 3 deletions(-) diff --git a/alib2/test-src/main.cpp b/alib2/test-src/main.cpp index fdbbccd10a..3fc603d66d 100644 --- a/alib2/test-src/main.cpp +++ b/alib2/test-src/main.cpp @@ -2,10 +2,92 @@ #include <cppunit/CompilerOutputter.h> #include <cppunit/extensions/TestFactoryRegistry.h> #include <cppunit/ui/text/TestRunner.h> +#include <cppunit/TestResultCollector.h> +#include <cppunit/TestResult.h> +#include <cppunit/Test.h> +#include <cppunit/TestFailure.h> +#include <cppunit/portability/Stream.h> +#include <cppunit/TestListener.h> + +CPPUNIT_NS_BEGIN + +class CPPUNIT_API TestProgressListener : public TestListener +{ +public: + TestProgressListener(); + + virtual ~TestProgressListener(); + + void startTest( Test *test ); + + void addFailure( const TestFailure &failure ); + + void endTest( Test *test ); + + int getResult() const; +private: + TestProgressListener( const TestProgressListener © ); + + void operator =( const TestProgressListener © ); + +private: + int m_Result; + bool m_lastTestFailed; +}; + +TestProgressListener::TestProgressListener() : m_Result( 0 ), m_lastTestFailed( false ) +{ +} + +TestProgressListener::~TestProgressListener() +{ +} + +void TestProgressListener::startTest( Test * test ) +{ + stdCOut() << test->getName() << ":\n"; + stdCOut().flush(); + + m_lastTestFailed = false; +} + +void TestProgressListener::addFailure( const TestFailure &failure ) +{ + stdCOut() << " : " << (failure.isError() ? "error" : "assertion"); + + m_lastTestFailed = true; + m_Result++; +} + +void TestProgressListener::endTest( Test * test) +{ + stdCOut() << "Result (" << test->getName() << "):"; + stdCOut().flush(); + + if ( !m_lastTestFailed ) + stdCOut() << " : OK"; + else + stdCOut() << " : Fail"; + stdCOut() << "\n\n"; +} + +int TestProgressListener::getResult() const { + return m_Result; +} + +CPPUNIT_NS_END int main(int , char*[]) { + CppUnit::TestResult controller; + + CppUnit::TestResultCollector result; + controller.addListener( &result ); + + CppUnit::TestProgressListener progressListener; + controller.addListener( &progressListener ); + // Get the top level suite from the registry CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest(); @@ -17,8 +99,7 @@ int main(int , char*[]) runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), std::cerr ) ); // Run the tests. - bool wasSucessful = runner.run(); + runner.run( controller ); - // Return error code 1 if the one of test failed. - return wasSucessful ? 0 : 1; + return progressListener.getResult(); } -- GitLab