summaryrefslogtreecommitdiff
path: root/boost/test/impl/unit_test_log.ipp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/test/impl/unit_test_log.ipp')
-rw-r--r--boost/test/impl/unit_test_log.ipp89
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