I'm get a SIGEGV segmentation fault /only/ when trying to register a test manually. Everything works just fine if I use auto registration. All compiles and links in both cases are without error. I know almost nothing about using gdb, but I was able to see the segment violation message shown below. I'm running Boost 1.58.0; Windows 7.1 64-bit; MinGW 4.9.2 64-bit; Eclipse Luna; CDT 8.6.0 In my TestMain.cpp #define BOOST_TEST_ALTERNATIVE_INIT_API #define BOOST_TEST_NO_MAIN #include "boost/test/unit_test.hpp" extern void Operand_Default_Constructor_Test(); bool init_unit_test() { framework::master_test_suite().p_name.value = "DiGSE Master Test"; framework::master_test_suite().add(BOOST_TEST_CASE(&Operand_Default_Constructor_Test)); return true; } int main(int argc, char* argv[]) { return boost::unit_test::unit_test_main(&init_unit_test, argc, argv); } It compiles and links without error. However, executing it gives this SIGEGV fault: Program received signal SIGSEGV, Segmentation fault. 0x000000006b405a12 in boost::unit_test::framework::get (id=1, t=boost::unit_test::tut_suite) at ./boost/test/impl/framework.ipp:388 388 if( (res->p_type & t) == 0 ) The failing snippet is part of a test that would throw internal_error(), but the if test itself seems to fail. if( (res->p_type & t) == 0 ) throw internal_error( "Invalid test unit type" ); If the Operand_Default_Constructor_Test test is changed from void Operand_Default_Constructor_Test() to BOOST_AUTO_TEST_CASE(Operand_Default_Constructor_Test) and the contents of init_unit_test() are removed, it works just fine with automatic registration. And the automatic registration is certainly the easiest way; but I was holding out hope for being able to specify test ordering. Merrill Cornish
I've given up on manual registration. I'm continuing with auto for now. I'm looking forward to the next version. Thanks, Merrill
participants (2)
-
Gennadiy Rozental
-
Merrill Cornish