From f08bd860b2fcaf547ed51bbcd09369ae1eef2c31 Mon Sep 17 00:00:00 2001 From: Raffi Enficiaud Date: Sun, 23 Sep 2018 23:44:47 +0200 Subject: [PATCH] Removing broken Singleton pattern The singleton is not robust to initialization in several translation units between shared library with hidden visibility. Removing Fixing tests accordingly. --- include/boost/test/data/test_case.hpp | 6 ++--- include/boost/test/impl/decorator.ipp | 20 ++++++++------ include/boost/test/impl/progress_monitor.ipp | 8 ++++-- include/boost/test/impl/results_collector.ipp | 4 +++ .../impl/test_framework_init_observer.ipp | 8 ++++++ include/boost/test/impl/test_tree.ipp | 12 ++++----- include/boost/test/impl/unit_test_log.ipp | 4 +++ include/boost/test/impl/unit_test_monitor.ipp | 3 +++ include/boost/test/progress_monitor.hpp | 4 +-- include/boost/test/results_collector.hpp | 6 ++--- .../test/test_framework_init_observer.hpp | 4 +-- include/boost/test/tree/auto_registration.hpp | 8 +++--- include/boost/test/tree/decorator.hpp | 22 +++++++++------- include/boost/test/tree/test_unit.hpp | 4 +-- include/boost/test/unit_test_log.hpp | 3 ++- include/boost/test/unit_test_monitor.hpp | 4 +-- include/boost/test/unit_test_suite.hpp | 10 +++---- include/boost/test/utils/runtime/errors.hpp | 8 +++--- .../boost/test/utils/trivial_singleton.hpp | 18 +++++++++++-- .../log-formatter-test.pattern | 26 +++++++++---------- .../log-formatter-test.pattern.junit | 2 +- 21 files changed, 114 insertions(+), 70 deletions(-) diff --git a/include/boost/test/data/test_case.hpp b/include/boost/test/data/test_case.hpp index eecbee90..2b3e7e4c 100644 --- a/include/boost/test/data/test_case.hpp +++ b/include/boost/test/data/test_case.hpp @@ -147,12 +147,12 @@ public: : m_dataset( ds ) , m_generated( false ) , m_tc_name( ut_detail::normalize_test_case_name( tc_name ) ) - , m_tc_file( tc_file ) + , m_tc_file( tc_file ) , m_tc_line( tc_line ) , m_tc_index( 0 ) {} #endif - + public: virtual test_unit* next() const { @@ -273,7 +273,7 @@ BOOST_AUTO_TU_REGISTRAR( BOOST_PP_CAT(test_name, case) )( \ BOOST_STRINGIZE( test_name ), \ __FILE__, __LINE__, \ boost::unit_test::data::ds_detail::seed{} ->* dataset ), \ - boost::unit_test::decorator::collector::instance() ); \ + boost::unit_test::decorator::collector_t::instance() ); \ \ BOOST_AUTO_TEST_SUITE_END() \ \ diff --git a/include/boost/test/impl/decorator.ipp b/include/boost/test/impl/decorator.ipp index 0cc562ee..85c272b4 100644 --- a/include/boost/test/impl/decorator.ipp +++ b/include/boost/test/impl/decorator.ipp @@ -35,11 +35,15 @@ namespace unit_test { namespace decorator { // ************************************************************************** // -// ************** decorator::collector ************** // +// ************** decorator::collector_t ************** // // ************************************************************************** // -collector& -collector::operator*( base const& d ) +// singleton pattern +BOOST_TEST_SINGLETON_CONS_IMPL(collector_t) + + +collector_t& +collector_t::operator*( base const& d ) { m_tu_decorators.push_back( d.clone() ); @@ -49,7 +53,7 @@ collector::operator*( base const& d ) //____________________________________________________________________________// void -collector::store_in( test_unit& tu ) +collector_t::store_in( test_unit& tu ) { tu.p_decorators.value.insert( tu.p_decorators.value.end(), m_tu_decorators.begin(), m_tu_decorators.end() ); } @@ -57,7 +61,7 @@ collector::store_in( test_unit& tu ) //____________________________________________________________________________// void -collector::reset() +collector_t::reset() { m_tu_decorators.clear(); } @@ -65,7 +69,7 @@ collector::reset() //____________________________________________________________________________// std::vector -collector::get_lazy_decorators() const +collector_t::get_lazy_decorators() const { return m_tu_decorators; } @@ -76,10 +80,10 @@ collector::get_lazy_decorators() const // ************** decorator::base ************** // // ************************************************************************** // -collector& +collector_t& base::operator*() const { - return collector::instance() * *this; + return collector_t::instance() * *this; } // ************************************************************************** // diff --git a/include/boost/test/impl/progress_monitor.ipp b/include/boost/test/impl/progress_monitor.ipp index 34149745..998aa26b 100644 --- a/include/boost/test/impl/progress_monitor.ipp +++ b/include/boost/test/impl/progress_monitor.ipp @@ -52,7 +52,7 @@ struct progress_display { << "\n|----|----|----|----|----|----|----|----|----|----|" << std::endl; - if( !m_expected_count ) + if( !m_expected_count ) m_expected_count = 1; // prevent divide by zero } @@ -63,7 +63,7 @@ struct progress_display { // use of floating point ensures that both large and small counts // work correctly. static_cast<>() is also used several places - // to suppress spurious compiler warnings. + // to suppress spurious compiler warnings. unsigned int tics_needed = static_cast( (static_cast(m_count)/m_expected_count)*50.0 ); @@ -121,6 +121,10 @@ progress_monitor_impl& s_pm_impl() { static progress_monitor_impl the_inst; retu //____________________________________________________________________________// +BOOST_TEST_SINGLETON_CONS_IMPL(progress_monitor_t) + +//____________________________________________________________________________// + void progress_monitor_t::test_start( counter_t test_cases_amount ) { diff --git a/include/boost/test/impl/results_collector.ipp b/include/boost/test/impl/results_collector.ipp index ea505093..cfc34cf7 100644 --- a/include/boost/test/impl/results_collector.ipp +++ b/include/boost/test/impl/results_collector.ipp @@ -139,6 +139,10 @@ results_collector_impl& s_rc_impl() { static results_collector_impl the_inst; re //____________________________________________________________________________// +BOOST_TEST_SINGLETON_CONS_IMPL( results_collector_t ) + +//____________________________________________________________________________// + void results_collector_t::test_start( counter_t ) { diff --git a/include/boost/test/impl/test_framework_init_observer.ipp b/include/boost/test/impl/test_framework_init_observer.ipp index 89f854aa..a44382ee 100644 --- a/include/boost/test/impl/test_framework_init_observer.ipp +++ b/include/boost/test/impl/test_framework_init_observer.ipp @@ -45,6 +45,14 @@ test_init_observer_check& s_tioc_impl() { static test_init_observer_check the_in } // local namespace + +//____________________________________________________________________________// + +// singleton pattern +BOOST_TEST_SINGLETON_CONS_IMPL(framework_init_observer_t) + +//____________________________________________________________________________// + void framework_init_observer_t::clear() { diff --git a/include/boost/test/impl/test_tree.ipp b/include/boost/test/impl/test_tree.ipp index cb48be4a..b4bee896 100644 --- a/include/boost/test/impl/test_tree.ipp +++ b/include/boost/test/impl/test_tree.ipp @@ -274,7 +274,7 @@ test_suite::add( test_unit_generator const& gen, unsigned timeout ) //____________________________________________________________________________// void -test_suite::add( test_unit_generator const& gen, decorator::collector& decorators ) +test_suite::add( test_unit_generator const& gen, decorator::collector_t& decorators ) { test_unit* tu; while((tu = gen.next()) != 0) { @@ -285,7 +285,7 @@ test_suite::add( test_unit_generator const& gen, decorator::collector& decorator } void -test_suite::add( boost::shared_ptr gen_ptr, decorator::collector& decorators ) +test_suite::add( boost::shared_ptr gen_ptr, decorator::collector_t& decorators ) { std::pair, std::vector > tmp_p(gen_ptr, decorators.get_lazy_decorators() ); m_generators.push_back(tmp_p); @@ -453,7 +453,7 @@ normalize_test_case_name( const_string name ) // ************** auto_test_unit_registrar ************** // // ************************************************************************** // -auto_test_unit_registrar::auto_test_unit_registrar( test_case* tc, decorator::collector& decorators, counter_t exp_fail ) +auto_test_unit_registrar::auto_test_unit_registrar( test_case* tc, decorator::collector_t& decorators, counter_t exp_fail ) { framework::current_auto_test_suite().add( tc, exp_fail ); @@ -463,7 +463,7 @@ auto_test_unit_registrar::auto_test_unit_registrar( test_case* tc, decorator::co //____________________________________________________________________________// -auto_test_unit_registrar::auto_test_unit_registrar( const_string ts_name, const_string ts_file, std::size_t ts_line, decorator::collector& decorators ) +auto_test_unit_registrar::auto_test_unit_registrar( const_string ts_name, const_string ts_file, std::size_t ts_line, decorator::collector_t& decorators ) { test_unit_id id = framework::current_auto_test_suite().get( ts_name ); @@ -486,14 +486,14 @@ auto_test_unit_registrar::auto_test_unit_registrar( const_string ts_name, const_ //____________________________________________________________________________// -auto_test_unit_registrar::auto_test_unit_registrar( test_unit_generator const& tc_gen, decorator::collector& decorators ) +auto_test_unit_registrar::auto_test_unit_registrar( test_unit_generator const& tc_gen, decorator::collector_t& decorators ) { framework::current_auto_test_suite().add( tc_gen, decorators ); } //____________________________________________________________________________// -auto_test_unit_registrar::auto_test_unit_registrar( boost::shared_ptr tc_gen, decorator::collector& decorators ) +auto_test_unit_registrar::auto_test_unit_registrar( boost::shared_ptr tc_gen, decorator::collector_t& decorators ) { framework::current_auto_test_suite().add( tc_gen, decorators ); } diff --git a/include/boost/test/impl/unit_test_log.ipp b/include/boost/test/impl/unit_test_log.ipp index 2a6c0f4b..40b54be2 100644 --- a/include/boost/test/impl/unit_test_log.ipp +++ b/include/boost/test/impl/unit_test_log.ipp @@ -159,6 +159,10 @@ unit_test_log_impl& s_log_impl() { static unit_test_log_impl the_inst; return th //____________________________________________________________________________// +BOOST_TEST_SINGLETON_CONS_IMPL( unit_test_log_t ) + +//____________________________________________________________________________// + void unit_test_log_t::test_start( counter_t test_cases_amount ) { diff --git a/include/boost/test/impl/unit_test_monitor.ipp b/include/boost/test/impl/unit_test_monitor.ipp index cfb41a23..70e78513 100644 --- a/include/boost/test/impl/unit_test_monitor.ipp +++ b/include/boost/test/impl/unit_test_monitor.ipp @@ -29,6 +29,9 @@ namespace boost { namespace unit_test { +// singleton pattern +BOOST_TEST_SINGLETON_CONS_IMPL(unit_test_monitor_t) + // ************************************************************************** // // ************** unit_test_monitor ************** // // ************************************************************************** // diff --git a/include/boost/test/progress_monitor.hpp b/include/boost/test/progress_monitor.hpp index 2f661f58..b1cf164b 100644 --- a/include/boost/test/progress_monitor.hpp +++ b/include/boost/test/progress_monitor.hpp @@ -31,7 +31,7 @@ namespace unit_test { // ************************************************************************** // /// This class implements test observer interface and updates test progress as test units finish or get aborted -class BOOST_TEST_DECL progress_monitor_t : public test_observer, public singleton { +class BOOST_TEST_DECL progress_monitor_t : public test_observer { public: /// @name Test observer interface /// @{ @@ -49,7 +49,7 @@ public: void set_stream( std::ostream& ); /// @} -private: + /// Singleton pattern BOOST_TEST_SINGLETON_CONS( progress_monitor_t ) }; // progress_monitor_t diff --git a/include/boost/test/results_collector.hpp b/include/boost/test/results_collector.hpp index 75a0e551..6ff523e7 100644 --- a/include/boost/test/results_collector.hpp +++ b/include/boost/test/results_collector.hpp @@ -84,7 +84,7 @@ public: /// For test suites, this indicates if the test suite itself has been marked as /// skipped, and not if the test suite contains any skipped test. bool skipped() const; - + /// Returns true if the test unit was aborted (hard failure) bool aborted() const; @@ -115,7 +115,7 @@ public: /// of the test tree. /// /// @see boost::unit_test::test_observer -class BOOST_TEST_DECL results_collector_t : public test_observer, public singleton { +class BOOST_TEST_DECL results_collector_t : public test_observer { public: virtual void test_start( counter_t ); @@ -135,7 +135,7 @@ public: /// @param[in] tu_id id of a test unit test_results const& results( test_unit_id tu_id ) const; -private: + /// Singleton pattern BOOST_TEST_SINGLETON_CONS( results_collector_t ) }; diff --git a/include/boost/test/test_framework_init_observer.hpp b/include/boost/test/test_framework_init_observer.hpp index cdf5ef5e..68ea3dd9 100644 --- a/include/boost/test/test_framework_init_observer.hpp +++ b/include/boost/test/test_framework_init_observer.hpp @@ -33,7 +33,7 @@ namespace unit_test { /// This class collects the state of the init/termination of the unit test framework. /// /// @see boost::unit_test::test_observer -class BOOST_TEST_DECL framework_init_observer_t : public test_observer, public singleton { +class BOOST_TEST_DECL framework_init_observer_t : public test_observer { public: virtual void test_start( counter_t ); @@ -49,7 +49,7 @@ public: /// Indicates if a failure has been recorded so far bool has_failed( ) const; -private: + /// Singleton pattern BOOST_TEST_SINGLETON_CONS( framework_init_observer_t ) }; diff --git a/include/boost/test/tree/auto_registration.hpp b/include/boost/test/tree/auto_registration.hpp index 98bc2924..e9510be2 100644 --- a/include/boost/test/tree/auto_registration.hpp +++ b/include/boost/test/tree/auto_registration.hpp @@ -37,10 +37,10 @@ namespace ut_detail { struct BOOST_TEST_DECL auto_test_unit_registrar { // Constructors - auto_test_unit_registrar( test_case* tc, decorator::collector& decorators, counter_t exp_fail = 0 ); - explicit auto_test_unit_registrar( const_string ts_name, const_string ts_file, std::size_t ts_line, decorator::collector& decorators ); - explicit auto_test_unit_registrar( test_unit_generator const& tc_gen, decorator::collector& decorators ); - explicit auto_test_unit_registrar( boost::shared_ptr tc_gen, decorator::collector& decorators ); + auto_test_unit_registrar( test_case* tc, decorator::collector_t& decorators, counter_t exp_fail = 0 ); + explicit auto_test_unit_registrar( const_string ts_name, const_string ts_file, std::size_t ts_line, decorator::collector_t& decorators ); + explicit auto_test_unit_registrar( test_unit_generator const& tc_gen, decorator::collector_t& decorators ); + explicit auto_test_unit_registrar( boost::shared_ptr tc_gen, decorator::collector_t& decorators ); explicit auto_test_unit_registrar( int ); }; diff --git a/include/boost/test/tree/decorator.hpp b/include/boost/test/tree/decorator.hpp index f891a277..3cc84004 100644 --- a/include/boost/test/tree/decorator.hpp +++ b/include/boost/test/tree/decorator.hpp @@ -22,9 +22,8 @@ #include #include - -#include #include +#include // Boost #include @@ -46,37 +45,40 @@ class test_unit; namespace decorator { // ************************************************************************** // -// ************** decorator::collector ************** // +// ************** decorator::collector_t ************** // // ************************************************************************** // class base; typedef boost::shared_ptr base_ptr; -class BOOST_TEST_DECL collector : public singleton { +class BOOST_TEST_DECL collector_t { + public: - collector& operator*( base const& d ); + collector_t& operator*( base const& d ); void store_in( test_unit& tu ); void reset(); - + std::vector get_lazy_decorators() const; -private: - BOOST_TEST_SINGLETON_CONS( collector ) + // singleton pattern + BOOST_TEST_SINGLETON_CONS( collector_t ) + private: // Data members std::vector m_tu_decorators; }; + // ************************************************************************** // -// ************** decorator::base ************** // +// ************** decorator::base ************** // // ************************************************************************** // class BOOST_TEST_DECL base { public: // composition interface - collector& operator*() const; + collector_t& operator*() const; // application interface virtual void apply( test_unit& tu ) = 0; diff --git a/include/boost/test/tree/test_unit.hpp b/include/boost/test/tree/test_unit.hpp index 1441bdc7..3fa9164f 100644 --- a/include/boost/test/tree/test_unit.hpp +++ b/include/boost/test/tree/test_unit.hpp @@ -176,10 +176,10 @@ public: void add( test_unit_generator const& gen, unsigned timeout = 0 ); /// @overload - void add( test_unit_generator const& gen, decorator::collector& decorators ); + void add( test_unit_generator const& gen, decorator::collector_t& decorators ); /// @overload - void add( boost::shared_ptr gen_ptr, decorator::collector& decorators ); + void add( boost::shared_ptr gen_ptr, decorator::collector_t& decorators ); //! Removes a test from the test suite. void remove( test_unit_id id ); diff --git a/include/boost/test/unit_test_log.hpp b/include/boost/test/unit_test_log.hpp index 6944ffa7..967f74d6 100644 --- a/include/boost/test/unit_test_log.hpp +++ b/include/boost/test/unit_test_log.hpp @@ -109,7 +109,7 @@ private: /// @see /// - boost::unit_test::test_observer /// - boost::unit_test::unit_test_log_formatter -class BOOST_TEST_DECL unit_test_log_t : public test_observer, public singleton { +class BOOST_TEST_DECL unit_test_log_t : public test_observer { public: // test_observer interface implementation virtual void test_start( counter_t test_cases_amount ); @@ -221,6 +221,7 @@ private: void log_entry_context( log_level l ); void clear_entry_context(); + // Singleton BOOST_TEST_SINGLETON_CONS( unit_test_log_t ) }; // unit_test_log_t diff --git a/include/boost/test/unit_test_monitor.hpp b/include/boost/test/unit_test_monitor.hpp index 4402b79e..a55b929d 100644 --- a/include/boost/test/unit_test_monitor.hpp +++ b/include/boost/test/unit_test_monitor.hpp @@ -30,7 +30,7 @@ namespace unit_test { // ************** unit_test_monitor ************** // // ************************************************************************** // -class BOOST_TEST_DECL unit_test_monitor_t : public singleton, public execution_monitor { +class BOOST_TEST_DECL unit_test_monitor_t :public execution_monitor { public: enum error_level { test_ok = 0, @@ -48,7 +48,7 @@ public: // monitor method error_level execute_and_translate( boost::function const& func, unsigned timeout = 0 ); -private: + // singleton pattern BOOST_TEST_SINGLETON_CONS( unit_test_monitor_t ) }; diff --git a/include/boost/test/unit_test_suite.hpp b/include/boost/test/unit_test_suite.hpp index dc6259d2..698362e5 100644 --- a/include/boost/test/unit_test_suite.hpp +++ b/include/boost/test/unit_test_suite.hpp @@ -65,7 +65,7 @@ BOOST_AUTO_TU_REGISTRAR( suite_name )( \ #define BOOST_AUTO_TEST_SUITE_NO_DECOR( suite_name ) \ BOOST_AUTO_TEST_SUITE_WITH_DECOR( \ suite_name, \ - boost::unit_test::decorator::collector::instance() ) \ + boost::unit_test::decorator::collector_t::instance() ) \ /**/ #if BOOST_PP_VARIADICS @@ -169,7 +169,7 @@ void test_name::test_method() \ #define BOOST_FIXTURE_TEST_CASE_NO_DECOR( test_name, F ) \ BOOST_FIXTURE_TEST_CASE_WITH_DECOR( test_name, F, \ - boost::unit_test::decorator::collector::instance() ) \ + boost::unit_test::decorator::collector_t::instance() ) \ /**/ #if BOOST_PP_VARIADICS @@ -248,7 +248,7 @@ BOOST_AUTO_TU_REGISTRAR( test_name )( \ boost::unit_test::ut_detail::template_test_case_gen< \ BOOST_AUTO_TC_INVOKER( test_name ),TL >( \ BOOST_STRINGIZE( test_name ), __FILE__, __LINE__ ), \ - boost::unit_test::decorator::collector::instance() ); \ + boost::unit_test::decorator::collector_t::instance() ); \ \ template \ void test_name::test_method() \ @@ -321,7 +321,7 @@ static boost::unit_test::ut_detail::global_fixture_impl BOOST_JOIN( gf_, F ) // ************************************************************************** // #define BOOST_TEST_DECORATOR( D ) \ -static boost::unit_test::decorator::collector const& \ +static boost::unit_test::decorator::collector_t const& \ BOOST_TEST_APPEND_UNIQUE_ID(decorator_collector) = D; \ /**/ @@ -345,7 +345,7 @@ typedef ::boost::unit_test::ut_detail::nil_t BOOST_AUTO_TEST_CASE_FIXTURE; // ************************************************************************** // // Facility for having a unique name based on __LINE__ and __COUNTER__ (later if available) -#if defined(__COUNTER__) +#if defined(__COUNTER__) #define BOOST_TEST_INTERNAL_HAS_COUNTER #endif diff --git a/include/boost/test/utils/runtime/errors.hpp b/include/boost/test/utils/runtime/errors.hpp index 5b263d21..056a823e 100644 --- a/include/boost/test/utils/runtime/errors.hpp +++ b/include/boost/test/utils/runtime/errors.hpp @@ -37,7 +37,7 @@ namespace runtime { // ************** runtime::param_error ************** // // ************************************************************************** // -class param_error : public std::exception { +class BOOST_SYMBOL_VISIBLE param_error : public std::exception { public: ~param_error() BOOST_NOEXCEPT_OR_NOTHROW {} @@ -55,7 +55,7 @@ protected: //____________________________________________________________________________// -class init_error : public param_error { +class BOOST_SYMBOL_VISIBLE init_error : public param_error { protected: explicit init_error( cstring param_name ) : param_error( param_name ) {} ~init_error() BOOST_NOEXCEPT_OR_NOTHROW {} @@ -70,7 +70,7 @@ protected: //____________________________________________________________________________// template -class specific_param_error : public Base { +class BOOST_SYMBOL_VISIBLE specific_param_error : public Base { protected: explicit specific_param_error( cstring param_name ) : Base( param_name ) {} ~specific_param_error() BOOST_NOEXCEPT_OR_NOTHROW {} @@ -155,7 +155,7 @@ SPECIFIC_EX_TYPE( missing_req_arg, input_error ); #undef SPECIFIC_EX_TYPE -class ambiguous_param : public specific_param_error { +class BOOST_SYMBOL_VISIBLE ambiguous_param : public specific_param_error { public: #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES explicit ambiguous_param( std::vector&& amb_candidates ) diff --git a/include/boost/test/utils/trivial_singleton.hpp b/include/boost/test/utils/trivial_singleton.hpp index ac612b63..ae9717d6 100644 --- a/include/boost/test/utils/trivial_singleton.hpp +++ b/include/boost/test/utils/trivial_singleton.hpp @@ -32,7 +32,7 @@ namespace unit_test { // ************************************************************************** // template -class singleton { +class BOOST_TEST_DECL singleton { public: static Derived& instance() { static Derived the_inst; return the_inst; } @@ -46,11 +46,25 @@ protected: //____________________________________________________________________________// -#define BOOST_TEST_SINGLETON_CONS( type ) \ +#define BOOST_TEST_SINGLETON_CONS_OLD( type ) \ friend class boost::unit_test::singleton; \ type() {} \ /**/ +#define BOOST_TEST_SINGLETON_CONS( type ) \ +public: \ + static type& instance(); \ +private: \ + BOOST_DELETED_FUNCTION(type(type const&)) \ + BOOST_DELETED_FUNCTION(type& operator=(type const&)) \ + BOOST_DEFAULTED_FUNCTION(type(), {}) \ + BOOST_DEFAULTED_FUNCTION(~type(), {}) \ + +#define BOOST_TEST_SINGLETON_CONS_IMPL( type ) \ + type& type::instance() { \ + static type the_inst; return the_inst; \ + } \ + #if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) #define BOOST_TEST_SINGLETON_INST( inst ) \ diff --git a/test/baseline-outputs/log-formatter-test.pattern b/test/baseline-outputs/log-formatter-test.pattern index 63408105..6fec5413 100644 --- a/test/baseline-outputs/log-formatter-test.pattern +++ b/test/baseline-outputs/log-formatter-test.pattern @@ -7,14 +7,14 @@ xxx/log-formatter-test.cpp:210: Leaving test case "good_foo" xxx/log-formatter-test.cpp:209: Leaving test suite "1 test cases inside" * 2-format ******************************************************************* -ZZZ +ZZZ * 3-format ******************************************************************* @@ -130,7 +130,7 @@ xxx/log-formatter-test.cpp:216: Leaving test case "almost_good_foo" xxx/log-formatter-test.cpp:215: Leaving test suite "1 almost good test case inside" * 2-format ******************************************************************* -3 is not satisfied [2 <= 3]]]>ZZZ +3 is not satisfied [2 <= 3]]]>ZZZ * 3-format ******************************************************************* @@ -142,7 +142,7 @@ xxx/log-formatter-test.cpp:215: Leaving test suite "1 almost good test case insi MESSAGE: - file : boost.test framework -- line : 222 +- line : 226 - message: Test case 1 almost good test case inside/almost_good_foo did not check any assertions ]]> @@ -173,14 +173,14 @@ xxx/log-formatter-test.cpp:220: Leaving test case "bad_foo" xxx/log-formatter-test.cpp:218: Leaving test suite "2 test cases inside" * 2-format ******************************************************************* -ZZZZZZ +ZZZZZZ * 3-format ******************************************************************* @@ -263,7 +263,7 @@ ASSERTION FAILURE: * 1-format ******************************************************************* Running 3 test cases... -xxx/log-formatter-test.cpp:222: Entering test suite "3 test cases inside" +xxx/log-formatter-test.cpp:226: Entering test suite "3 test cases inside" xxx/log-formatter-test.cpp:223: Entering test case "bad_foo" xxx/log-formatter-test.cpp:48: error: in "Fake Test Suite Hierarchy/3 test cases inside/bad_foo": this is a message @@ -280,10 +280,10 @@ Failure occurred in a following context: some context xxx/log-formatter-test.cpp:224: Leaving test case "very_bad_foo" xxx/log-formatter-test.cpp:226: Test case "Fake Test Suite Hierarchy/3 test cases inside/bad_foo2" is skipped because dependency test case "Fake Test Suite Hierarchy/3 test cases inside/very_bad_foo" has failed -xxx/log-formatter-test.cpp:222: Leaving test suite "3 test cases inside" +xxx/log-formatter-test.cpp:226: Leaving test suite "3 test cases inside" * 2-format ******************************************************************* -ZZZZZZ +ZZZZZZ * 3-format ******************************************************************* @@ -765,18 +765,18 @@ Failure occurred in a following context: xxx/log-formatter-test.cpp:57: error: in "Fake Test Suite Hierarchy/4 test cases inside/bad_foo2": non sense xxx/log-formatter-test.cpp:234: Leaving test case "bad_foo2" xxx/log-formatter-test.cpp:230: Leaving test suite "4 test cases inside" -xxx/log-formatter-test.cpp:222: Test suite "Fake Test Suite Hierarchy/3 test cases inside" is skipped because dependency test suite "Fake Test Suite Hierarchy/1 test cases inside" has failed +xxx/log-formatter-test.cpp:226: Test suite "Fake Test Suite Hierarchy/3 test cases inside" is skipped because dependency test suite "Fake Test Suite Hierarchy/1 test cases inside" has failed xxx/log-formatter-test.cpp:236: Leaving test suite "Fake Test Suite Hierarchy" * 2-format ******************************************************************* -ZZZZZZZZZZZZZZZZZZZZZZZZ +ZZZZZZZZZZZZZZZZZZZZZZZZ * 3-format ******************************************************************* @@ -824,7 +824,7 @@ INFO: diff --git a/test/baseline-outputs/log-formatter-test.pattern.junit b/test/baseline-outputs/log-formatter-test.pattern.junit index b9a105b9..11f2a2dd 100644 --- a/test/baseline-outputs/log-formatter-test.pattern.junit +++ b/test/baseline-outputs/log-formatter-test.pattern.junit @@ -15,7 +15,7 @@ MESSAGE: - file : boost.test framework -- line : 222 +- line : 226 - message: Test case 1 test cases inside/almost_good_foo did not check any assertions ]]>