Boost logo

Boost :

From: Jens Seidel (jensseidel_at_[hidden])
Date: 2007-12-18 04:50:23


I would like to know why Boost's unit test framework requires that the
user defines init_unit_test_suite(int, char**) (or with char *[]
argument???) instead of main().

I recently had again some trouble because of it:
 * It broke the general autoconf test in boost.m4 as the existance of
   a Boost library can normally easily be tested by using boost code
   in main() and not init_unit_test_suite(). (Will probably be fixed
   soon in boost.m4.)
 * According to
   linkers don't look into libraries (either static or dynamic) to
   find main so that unit tests cannot be cimpiled as shared library.
 * I noticed that Debian's Boost library doesn't work for me as main()
   is not found in the shared library (but in the static one). I found
   now beside my bug report
   which mainly refers to the link above.

I'm not sure whether my problem is an error in Debian's packages
or not but I ask why is main handled differently in Boost.test?
Wouldn't it be sufficient to ask the user simple to start
init_unit_test_suite() from a user specified main() to make most
problems go away? Maybe it would be even OK to just start
init_unit_test_suite() in the constructor of a static variable
(yes, I know that the initialisation order may cause trouble with
other static data). doesn't explain it!

I will now use ifdef's to easily allow using
boost/test/included/unit_test.hpp as alternative to the library.


Boost list run by bdawes at, gregod at, cpdaniel at, john at