
"Michael van der Westhuizen" <r1mikey@gmail.com> wrote in message news:d21d65950610270423n5bf2f72ak9cfdacd30408f13b@mail.gmail.com...
Hi All,
I've recently found a reproducible regression in Boost.Test while moving from 1.32.0 to 1.33.1. This regression is apparently present in the HEAD and 1.34 candidate as well.
I can confirm this problem (and the fix) on HP aC++ 06.12 (ia64), HP aCC 03.67 (PA-RISC) and Sun Studio 11 (SPARC, with and without -library=stlport4). According to one of our compiler vendors this is reproducible on Tru64/Alpha cxx as well.
I do see a crash. The error is caused by obvios misuse of Boost::Test facilties. I plead guilty to lack of proper check though.
The fix is to change the test_unit::m_dependencies member (in boost/test/unit_test_suite.hpp, unit_test_suite_impl.hpp in trunk) from std::list<test_unit_id> to std::vector<test_unit_id> (yes, I know that doesn't make a whole lot of sense).
This fix only hides actual issue.
The test case is:
--- #include <boost/test/included/unit_test_framework.hpp> #include <boost/shared_ptr.hpp>
class DummyTest : public boost::unit_test_framework::test_suite
You are *NOT* supposed to be doing this.
{ public: DummyTest() : boost::unit_test_framework::test_suite( "DummyTest" ) {} void testDummy() { BOOST_CHECK( true ); } };
Correct definition would look like: class DummyTest { public: void testDummy() { BOOST_CHECK( true ); } };
boost::unit_test_framework::test_suite * init_unit_test_suite( int argc, char * argv[] ) { boost::unit_test_framework::test_suite * test = BOOST_TEST_SUITE( "Test Test Suite" ); boost::shared_ptr<DummyTest> suite_a( new DummyTest() ); test->add( BOOST_CLASS_TEST_CASE( &DummyTest::testDummy, suite_a ) ); return test; }
I will make sure this code wont compile. Gennadiy