[lightweight_test] cpp_main convention
Hi, I noticed this as popular convention across Boost libraries (e.g. endian) to deal with test cases that may throw or leak exceptions: int cpp_main( int argc, char* argv[] ) { test(); return ::boost::report_errors(); } int main( int argc, char* argv[] ) { try { return cpp_main( argc, argv ); } catch( std::exception const & x ) { BOOST_ERROR( x.what() ); return boost::report_errors(); } } Is there any reason to prefer that one over this one? int main( int argc, char* argv[] ) { try { test(); } catch( std::exception const & x ) { BOOST_ERROR( x.what() ); } return boost::report_errors(); } Best regards, -- Mateusz Loskot, http://mateusz.loskot.net
Mateusz Loskot wrote:
Hi,
I noticed this as popular convention across Boost libraries (e.g. endian) to deal with test cases that may throw or leak exceptions:
int cpp_main( int argc, char* argv[] ) ...
Is there any reason to prefer that one over this one?
int main( int argc, char* argv[] ) ...
cpp_main is not a convention. It's mostly useful when you already have a
common `main` provided by the test framework, whether inside the static test
framework library or in a header such as
https://github.com/boostorg/detail/blob/develop/include/boost/detail/lightwe...
The current state of affairs in Endian is because it used to use
On Thu, 26 Mar 2020 at 00:43, Peter Dimov via Boost
In a self-contained test, there is no need to use cpp_main. Just write `main` the usual straightforward way.
Good. I still add try-catch to avoid ungraceful termination w/ core dump. Thank you -- Mateusz Loskot, http://mateusz.loskot.net
participants (2)
-
Mateusz Loskot
-
Peter Dimov