annotate DEPENDENCIES/generic/include/boost/test/impl/xml_log_formatter.ipp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 // (C) Copyright Gennadiy Rozental 2005-2008.
Chris@16 2 // Distributed under the Boost Software License, Version 1.0.
Chris@16 3 // (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 4 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 5
Chris@16 6 // See http://www.boost.org/libs/test for the library home page.
Chris@16 7 //
Chris@16 8 // File : $RCSfile$
Chris@16 9 //
Chris@101 10 // Version : $Revision$
Chris@16 11 //
Chris@16 12 // Description : implements XML Log formatter
Chris@16 13 // ***************************************************************************
Chris@16 14
Chris@16 15 #ifndef BOOST_TEST_XML_LOG_FORMATTER_IPP_020105GER
Chris@16 16 #define BOOST_TEST_XML_LOG_FORMATTER_IPP_020105GER
Chris@16 17
Chris@16 18 // Boost.Test
Chris@16 19 #include <boost/test/output/xml_log_formatter.hpp>
Chris@16 20 #include <boost/test/unit_test_suite_impl.hpp>
Chris@16 21 #include <boost/test/framework.hpp>
Chris@16 22 #include <boost/test/utils/basic_cstring/io.hpp>
Chris@16 23
Chris@16 24 #include <boost/test/utils/xml_printer.hpp>
Chris@16 25
Chris@16 26 // Boost
Chris@16 27 #include <boost/version.hpp>
Chris@16 28
Chris@16 29 // STL
Chris@16 30 #include <iostream>
Chris@16 31
Chris@16 32 #include <boost/test/detail/suppress_warnings.hpp>
Chris@16 33
Chris@16 34 //____________________________________________________________________________//
Chris@16 35
Chris@16 36 namespace boost {
Chris@16 37
Chris@16 38 namespace unit_test {
Chris@16 39
Chris@16 40 namespace output {
Chris@16 41
Chris@16 42 static const_string tu_type_name( test_unit const& tu )
Chris@16 43 {
Chris@16 44 return tu.p_type == tut_case ? "TestCase" : "TestSuite";
Chris@16 45 }
Chris@16 46
Chris@16 47 // ************************************************************************** //
Chris@16 48 // ************** xml_log_formatter ************** //
Chris@16 49 // ************************************************************************** //
Chris@16 50
Chris@16 51 void
Chris@16 52 xml_log_formatter::log_start( std::ostream& ostr, counter_t )
Chris@16 53 {
Chris@16 54 ostr << "<TestLog>";
Chris@16 55 }
Chris@16 56
Chris@16 57 //____________________________________________________________________________//
Chris@16 58
Chris@16 59 void
Chris@16 60 xml_log_formatter::log_finish( std::ostream& ostr )
Chris@16 61 {
Chris@16 62 ostr << "</TestLog>";
Chris@16 63 }
Chris@16 64
Chris@16 65 //____________________________________________________________________________//
Chris@16 66
Chris@16 67 void
Chris@16 68 xml_log_formatter::log_build_info( std::ostream& ostr )
Chris@16 69 {
Chris@16 70 ostr << "<BuildInfo"
Chris@16 71 << " platform" << attr_value() << BOOST_PLATFORM
Chris@16 72 << " compiler" << attr_value() << BOOST_COMPILER
Chris@16 73 << " stl" << attr_value() << BOOST_STDLIB
Chris@16 74 << " boost=\"" << BOOST_VERSION/100000 << "."
Chris@16 75 << BOOST_VERSION/100 % 1000 << "."
Chris@16 76 << BOOST_VERSION % 100 << '\"'
Chris@16 77 << "/>";
Chris@16 78 }
Chris@16 79
Chris@16 80 //____________________________________________________________________________//
Chris@16 81
Chris@16 82 void
Chris@16 83 xml_log_formatter::test_unit_start( std::ostream& ostr, test_unit const& tu )
Chris@16 84 {
Chris@16 85 ostr << "<" << tu_type_name( tu ) << " name" << attr_value() << tu.p_name.get() << ">";
Chris@16 86 }
Chris@16 87
Chris@16 88 //____________________________________________________________________________//
Chris@16 89
Chris@16 90 void
Chris@16 91 xml_log_formatter::test_unit_finish( std::ostream& ostr, test_unit const& tu, unsigned long elapsed )
Chris@16 92 {
Chris@16 93 if( tu.p_type == tut_case )
Chris@16 94 ostr << "<TestingTime>" << elapsed << "</TestingTime>";
Chris@16 95
Chris@16 96 ostr << "</" << tu_type_name( tu ) << ">";
Chris@16 97 }
Chris@16 98
Chris@16 99 //____________________________________________________________________________//
Chris@16 100
Chris@16 101 void
Chris@16 102 xml_log_formatter::test_unit_skipped( std::ostream& ostr, test_unit const& tu )
Chris@16 103 {
Chris@16 104 ostr << "<" << tu_type_name( tu )
Chris@16 105 << " name" << attr_value() << tu.p_name.get()
Chris@16 106 << " skipped" << attr_value() << "yes"
Chris@16 107 << "/>";
Chris@16 108 }
Chris@16 109
Chris@16 110 //____________________________________________________________________________//
Chris@16 111
Chris@16 112 void
Chris@16 113 xml_log_formatter::log_exception( std::ostream& ostr, log_checkpoint_data const& checkpoint_data, execution_exception const& ex )
Chris@16 114 {
Chris@16 115 execution_exception::location const& loc = ex.where();
Chris@16 116
Chris@16 117 ostr << "<Exception file" << attr_value() << loc.m_file_name
Chris@16 118 << " line" << attr_value() << loc.m_line_num;
Chris@16 119
Chris@16 120 if( !loc.m_function.is_empty() )
Chris@16 121 ostr << " function" << attr_value() << loc.m_function;
Chris@16 122
Chris@16 123 ostr << ">" << cdata() << ex.what();
Chris@16 124
Chris@16 125 if( !checkpoint_data.m_file_name.is_empty() ) {
Chris@16 126 ostr << "<LastCheckpoint file" << attr_value() << checkpoint_data.m_file_name
Chris@16 127 << " line" << attr_value() << checkpoint_data.m_line_num
Chris@16 128 << ">"
Chris@16 129 << cdata() << checkpoint_data.m_message
Chris@16 130 << "</LastCheckpoint>";
Chris@16 131 }
Chris@16 132
Chris@16 133 ostr << "</Exception>";
Chris@16 134 }
Chris@16 135
Chris@16 136 //____________________________________________________________________________//
Chris@16 137
Chris@16 138 void
Chris@16 139 xml_log_formatter::log_entry_start( std::ostream& ostr, log_entry_data const& entry_data, log_entry_types let )
Chris@16 140 {
Chris@16 141 static literal_string xml_tags[] = { "Info", "Message", "Warning", "Error", "FatalError" };
Chris@16 142
Chris@16 143 m_curr_tag = xml_tags[let];
Chris@16 144 ostr << '<' << m_curr_tag
Chris@16 145 << BOOST_TEST_L( " file" ) << attr_value() << entry_data.m_file_name
Chris@16 146 << BOOST_TEST_L( " line" ) << attr_value() << entry_data.m_line_num
Chris@16 147 << BOOST_TEST_L( "><![CDATA[" );
Chris@16 148 }
Chris@16 149
Chris@16 150 //____________________________________________________________________________//
Chris@16 151
Chris@16 152 void
Chris@16 153 xml_log_formatter::log_entry_value( std::ostream& ostr, const_string value )
Chris@16 154 {
Chris@16 155 ostr << value;
Chris@16 156 }
Chris@16 157
Chris@16 158 //____________________________________________________________________________//
Chris@16 159
Chris@16 160 void
Chris@16 161 xml_log_formatter::log_entry_finish( std::ostream& ostr )
Chris@16 162 {
Chris@16 163 ostr << BOOST_TEST_L( "]]></" ) << m_curr_tag << BOOST_TEST_L( ">" );
Chris@16 164
Chris@16 165 m_curr_tag.clear();
Chris@16 166 }
Chris@16 167
Chris@16 168 //____________________________________________________________________________//
Chris@16 169
Chris@16 170 } // namespace output
Chris@16 171
Chris@16 172 } // namespace unit_test
Chris@16 173
Chris@16 174 } // namespace boost
Chris@16 175
Chris@16 176 //____________________________________________________________________________//
Chris@16 177
Chris@16 178 #include <boost/test/detail/enable_warnings.hpp>
Chris@16 179
Chris@16 180 #endif // BOOST_TEST_XML_LOG_FORMATTER_IPP_020105GER