Ticket #7417: boost_test_detailed_status_to_stdout.diff

File boost_test_detailed_status_to_stdout.diff, 2.7 KB (added by Jamie Allsop <ja11sop@…>, 10 years ago)
  • boost/test/impl/compiler_log_formatter.ipp

     
    2424#include <boost/test/utils/setcolor.hpp>
    2525#include <boost/test/output/compiler_log_formatter.hpp>
    2626#include <boost/test/unit_test_parameters.hpp>
     27#include <boost/test/results_collector.hpp>
    2728
    2829// Boost
    2930#include <boost/version.hpp>
     
    5354            : BOOST_TEST_L( "Test setup" );
    5455}
    5556
     57//____________________________________________________________________________//
     58 
     59void
     60print_result( std::ostream& ostr, counter_t v, counter_t total,
     61              const_string name, const_string res )
     62{
     63    if( v > 0 ) {
     64            ostr << v << ' ' << name << ( v != 1 ? "s" : "" );
     65            if( total > 0 ) {
     66                ostr << " out of " << total;
     67        }
     68            ostr << ' ' << res << ". ";
     69        }
     70}               
     71
    5672} // local namespace
    5773
    5874//____________________________________________________________________________//
     
    113129            output << elapsed << "mks";
    114130    }
    115131
     132    output << ". ";
     133
     134    test_results const& tr = results_collector.results( tu.p_id );
     135
     136    const_string status;
     137
     138    if( tr.passed() )
     139        status = "passed";
     140    else if( tr.p_skipped )
     141        status = "skipped";
     142    else if( tr.p_aborted )
     143        status = "aborted";
     144    else
     145        status = "failed";
     146
     147    output << "Test " << ( tu.p_type == tut_case ? "case" : "suite" ) << ' ' << status << ". ";
     148
     149    if( tr.p_skipped ) {
     150        output << "due to " << ( tu.check_dependencies() ? "test aborting\n" : "failed dependency\n" );
     151        return;
     152    }
     153
     154    counter_t total_assertions  = tr.p_assertions_passed + tr.p_assertions_failed;
     155    counter_t total_tc          = tr.p_test_cases_passed + tr.p_test_cases_failed + tr.p_test_cases_skipped;
     156
     157    if( total_assertions > 0 || total_tc > 0 ) {
     158        print_result( output, tr.p_assertions_passed,  total_assertions, "assertion", "passed" );
     159        print_result( output, tr.p_assertions_failed,  total_assertions, "assertion", "failed" );
     160        print_result( output, tr.p_expected_failures,  0               , "failure"  , "expected" );
     161        print_result( output, tr.p_test_cases_passed,  total_tc        , "test case", "passed" );
     162        print_result( output, tr.p_test_cases_failed,  total_tc        , "test case", "failed" );
     163        print_result( output, tr.p_test_cases_skipped, total_tc        , "test case", "skipped" );
     164        print_result( output, tr.p_test_cases_aborted, total_tc        , "test case", "aborted" );
     165    }
    116166    output << std::endl;
    117167}
    118168