
Dear Gennadiy Rozental, I've converted my local copy of the serialization library tests to use test/minimal.hpp in the hope that I can use it in the future as the "lowest common denominator" to permit testing against a wider array of platforms. Boost Test for support of msvc is scheduled to be remove in the near future. I've had problems testing the serialization library with comeau compilers because both the seriailzation library and boost test include instantiated code for string output and the comeau "pre-linker" fails here. I've felt the need for a "lighter weight" version of boost test. Recently on a contract job of mine I used some headers from boost. I didn't need to compile any boost libraries in this case. The existence of test/minimal.hpp permitted me to use boost test without going building the libraries which turned out to be very convenient for a number of reasons. So - I'm happy with test/minimal.hpp - But - in order to make it work with the serialization library I had to make a couple of tweaks which I would like to submit in the hope that they can be incorporated into the official boost test version. Change # 1 A small change to permit commeau to be tested with the serialization library. This is obviously a crude hack but perhaps it can be fine tuned to make it acceptable. RCS file: /cvsroot/boost/boost/boost/test/impl/unit_test_parameters.ipp,v retrieving revision 1.10 diff -r1.10 unit_test_parameters.ipp 204,205c204,205 < const_string rs_str = retrieve_framework_parameter( RANDOM_SEED, argc, argv ); < s_random_seed = rs_str.is_empty() ? 0 : lexical_cast<unsigned int>(rs_str ); ---
// const_string rs_str = retrieve_framework_parameter( RANDOM_SEED, argc, argv ); // s_random_seed = rs_str.is_empty() ? 0 : lexical_cast<unsigned int>( rs_str );
Change #2 I added some test tool macros for test/minimal.hpp . I would like to see these incorporated but of course could life without them if I have to. Index: minimal.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/test/minimal.hpp,v retrieving revision 1.19 diff -r1.19 minimal.hpp 17a18,19
#define BOOST_TEST_INCLUDED
22a25,29
#define BOOST_WARN(exp) \ ( (exp) \ ? static_cast<void>(0) \ : boost::minimal_test::report_message(#exp,__FILE__,__LINE__, BOOST_CURRENT_FUNCTION, true) )
27a35,62
#define BOOST_CHECK_MESSAGE(exp, msg_) \ ( (exp) \ ? static_cast<void>(0) \ : boost::minimal_test::report_error(msg_,__FILE__,__LINE__, BOOST_CURRENT_FUNCTION) )
#define BOOST_WARN_MESSAGE(exp, msg_) \ ( (exp) \ ? static_cast<void>(0) \ : boost::minimal_test::report_message(msg_,__FILE__,__LINE__, BOOST_CURRENT_FUNCTION) )
#define BOOST_REQUIRE_MESSAGE(exp, msg_) \ ( (exp) \ ? static_cast<void>(0) \ : boost::minimal_test::report_critical_error(msg_,__FILE__,__LINE__,BOOST_CURRENT_FUNCTION))
#define BOOST_WARN_EQUAL( left, right ) \ BOOST_WARN((left) == (right)) #define BOOST_CHECK_EQUAL( left, right ) \ BOOST_CHECK((left) == (right)) #define BOOST_REQUIRE_EQUAL( left, right ) \ BOOST_require((left) == (right))
#define BOOST_TEST_CHECKPOINT(msg_) \ boost::minimal_test::report_message( (msg_),__FILE__,__LINE__, BOOST_CURRENT_FUNCTION, true )
#define BOOST_TEST_MESSAGE(msg_) \ boost::minimal_test::report_message( (msg_),__FILE__,__LINE__, BOOST_CURRENT_FUNCTION, true )
29a65
32a69,70
#define BOOST_TEST_DONT_PRINT_LOG_VALUE( ArgumentType )
36c74,75 < #include <boost/test/detail/global_typedef.hpp> ---
#define BOOST_DISABLE_WIN32 //#include <boost/test/detail/global_typedef.hpp> 38c77 < #include <boost/test/utils/class_properties.hpp>
//#include <boost/test/utils/class_properties.hpp> 42c81 < #include <boost/cstdlib.hpp> // for exit codes#include <boost/cstdlib.hpp> // for exit codes
//#include <boost/cstdlib.hpp> // for exit codes#include <boost/cstdlib.hpp> // for exit codes 47c86 < #include <string> // std::string
//#include <string> // std::string 63c102 < report_error( const char* msg, const char* file, int line, const_string func_name, bool is_msg = false )
report_message( const char* msg, const char* file, int line, const_string func_name, bool is_msg = false ) 65d103 < ++errors_counter(); 79a118,124 report_error( const char* msg, const char* file, int line, const_string func_name, bool is_msg = false ) { ++errors_counter(); report_message(msg, file, line, func_name, is_msg); }
inline void
Thank you very much - I should say that one of your boost articles - maybe its still in there about how testing can change your life had a great effect on me. It has been very helpful to me personally. The "testing philosophy" expounded there - along with the instant availability of test/minimal.hpp - has made a night / day difference in the quality of code produced at one of my customers. Though off topic, I never really thanked you for your in depth review of the my original serialization library submission. Except for one tiny slip ("... contains this gem"), it was an exhaustive point by point critique of every aspect of it. Not that I enjoyed being on the receiving end of such criticism, it was clear to me that it was basically correct and well thought out.. After I recovered from the rejection I went back and re-did it using your critique as a checklist and was eventually successful in getting the library accepted. So, for better or worse, this library is part of boost only because of your six hour investment. Robert Ramey