diff options
Diffstat (limited to 'boost/test/impl/unit_test_log.ipp')
-rw-r--r-- | boost/test/impl/unit_test_log.ipp | 89 |
1 files changed, 56 insertions, 33 deletions
diff --git a/boost/test/impl/unit_test_log.ipp b/boost/test/impl/unit_test_log.ipp index 7cb4f4b4a8..f202f5027d 100644 --- a/boost/test/impl/unit_test_log.ipp +++ b/boost/test/impl/unit_test_log.ipp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2014. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -18,10 +18,10 @@ // Boost.Test #include <boost/test/unit_test_log.hpp> #include <boost/test/unit_test_log_formatter.hpp> -#include <boost/test/unit_test_suite_impl.hpp> #include <boost/test/execution_monitor.hpp> +#include <boost/test/framework.hpp> -#include <boost/test/detail/unit_test_parameters.hpp> +#include <boost/test/unit_test_parameters.hpp> #include <boost/test/utils/basic_cstring/compare.hpp> @@ -38,7 +38,6 @@ typedef ::boost::io::ios_base_all_saver io_saver_type; //____________________________________________________________________________// namespace boost { - namespace unit_test { // ************************************************************************** // @@ -57,7 +56,7 @@ entry_value_collector::operator<<( lazy_ostream const& v ) const //____________________________________________________________________________// -entry_value_collector const& +entry_value_collector const& entry_value_collector::operator<<( const_string v ) const { unit_test_log << v; @@ -194,7 +193,7 @@ unit_test_log_t::test_unit_finish( test_unit const& tu, unsigned long elapsed ) //____________________________________________________________________________// void -unit_test_log_t::test_unit_skipped( test_unit const& tu ) +unit_test_log_t::test_unit_skipped( test_unit const& tu, const_string reason ) { if( s_log_impl().m_threshold_level > log_test_units ) return; @@ -202,23 +201,7 @@ unit_test_log_t::test_unit_skipped( test_unit const& tu ) if( s_log_impl().m_entry_in_progress ) *this << log::end(); - s_log_impl().m_log_formatter->test_unit_skipped( s_log_impl().stream(), tu ); -} - -//____________________________________________________________________________// - -void -unit_test_log_t::test_unit_aborted( test_unit const& ) -{ - // do nothing -} - -//____________________________________________________________________________// - -void -unit_test_log_t::assertion_result( bool ) -{ - // do nothing + s_log_impl().m_log_formatter->test_unit_skipped( s_log_impl().stream(), tu, reason ); } //____________________________________________________________________________// @@ -235,8 +218,14 @@ unit_test_log_t::exception_caught( execution_exception const& ex ) if( s_log_impl().m_entry_in_progress ) *this << log::end(); - s_log_impl().m_log_formatter->log_exception( s_log_impl().stream(), s_log_impl().m_checkpoint_data, ex ); + s_log_impl().m_log_formatter->log_exception_start( s_log_impl().stream(), s_log_impl().m_checkpoint_data, ex ); + + log_entry_context( l ); + + s_log_impl().m_log_formatter->log_exception_finish( s_log_impl().stream() ); } + + clear_entry_context(); } //____________________________________________________________________________// @@ -254,7 +243,7 @@ set_unix_slash( char in ) { return in == '\\' ? '/' : in; } - + unit_test_log_t& unit_test_log_t::operator<<( log::begin const& b ) { @@ -282,10 +271,15 @@ unit_test_log_t::operator<<( log::begin const& b ) unit_test_log_t& unit_test_log_t::operator<<( log::end const& ) { - if( s_log_impl().m_entry_in_progress ) + if( s_log_impl().m_entry_in_progress ) { + log_entry_context( s_log_impl().m_entry_data.m_level ); + s_log_impl().m_log_formatter->log_entry_finish( s_log_impl().stream() ); - s_log_impl().m_entry_in_progress = false; + s_log_impl().m_entry_in_progress = false; + } + + clear_entry_context(); return *this; } @@ -315,7 +309,7 @@ unit_test_log_t::operator()( log_level l ) bool unit_test_log_t::log_entry_start() { - if( s_log_impl().m_entry_in_progress ) + if( s_log_impl().m_entry_in_progress ) return true; switch( s_log_impl().m_entry_data.m_level ) { @@ -377,6 +371,33 @@ unit_test_log_t::operator<<( lazy_ostream const& value ) //____________________________________________________________________________// void +unit_test_log_t::log_entry_context( log_level l ) +{ + framework::context_generator const& context = framework::get_context(); + if( context.is_empty() ) + return; + + const_string frame; + + s_log_impl().m_log_formatter->entry_context_start( s_log_impl().stream(), l ); + + while( !(frame=context.next()).is_empty() ) + s_log_impl().m_log_formatter->log_entry_context( s_log_impl().stream(), frame ); + + s_log_impl().m_log_formatter->entry_context_finish( s_log_impl().stream() ); +} + +//____________________________________________________________________________// + +void +unit_test_log_t::clear_entry_context() +{ + framework::clear_context(); +} + +//____________________________________________________________________________// + +void unit_test_log_t::set_stream( std::ostream& str ) { if( s_log_impl().m_entry_in_progress ) @@ -405,10 +426,15 @@ unit_test_log_t::set_format( output_format log_format ) if( s_log_impl().m_entry_in_progress ) return; - if( log_format == CLF ) + switch( log_format ) { + default: + case OF_CLF: set_formatter( new output::compiler_log_formatter ); - else + break; + case OF_XML: set_formatter( new output::xml_log_formatter ); + break; + } } //____________________________________________________________________________// @@ -434,11 +460,8 @@ unit_test_log_formatter::log_entry_value( std::ostream& ostr, lazy_ostream const //____________________________________________________________________________// } // namespace unit_test - } // namespace boost -//____________________________________________________________________________// - #include <boost/test/detail/enable_warnings.hpp> #endif // BOOST_TEST_UNIT_TEST_LOG_IPP_012205GER |