diff --git a/CMakeLists.txt b/CMakeLists.txt index f3aae434e..0031bdddf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,7 @@ include(EthCcache) # Let's find our dependencies include(EthDependencies) +find_package(Boost REQUIRED COMPONENTS filesystem system unit_test_framework program_options) find_package(fmt CONFIG REQUIRED) find_package(jsoncpp CONFIG REQUIRED) find_package(range-v3 CONFIG REQUIRED) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 255218c15..33d050bd0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -201,7 +201,7 @@ add_executable(soltest ${sources} ${solcli_sources} ${yul_phaser_sources} ) -target_link_libraries(soltest PRIVATE solcli libsolc yul solidity smtutil solutil phaser Boost::boost yulInterpreter evmasm Boost::filesystem Boost::program_options Boost::unit_test_framework evmc) +target_link_libraries(soltest PRIVATE solcli libsolc yul solidity smtutil solutil phaser Boost::boost yulInterpreter evmasm Boost::filesystem Boost::program_options evmc) # Special compilation flag for Visual Studio (version 2019 at least affected) diff --git a/test/boostTest.cpp b/test/boostTest.cpp index 1cc512c32..fe0820b66 100644 --- a/test/boostTest.cpp +++ b/test/boostTest.cpp @@ -29,7 +29,8 @@ #pragma warning(push) #pragma warning(disable:4535) // calling _set_se_translator requires /EHa #endif -#include +#define BOOST_TEST_NO_MAIN +#include #include #if defined(_MSC_VER) #pragma warning(pop) @@ -217,11 +218,7 @@ void initializeOptions() } -// TODO: Prototype -- why isn't this declared in the boost headers? -// TODO: replace this with a (global) fixture. -test_suite* init_unit_test_suite( int /*argc*/, char* /*argv*/[] ); - -test_suite* init_unit_test_suite( int /*argc*/, char* /*argv*/[] ) +test_suite* solidity_init_unit_test_suite( int /*argc*/, char* /*argv*/[] ) { using namespace solidity::test; @@ -291,17 +288,11 @@ test_suite* init_unit_test_suite( int /*argc*/, char* /*argv*/[] ) return nullptr; } -// BOOST_TEST_DYN_LINK should be defined if user want to link against shared boost test library -#ifdef BOOST_TEST_DYN_LINK - // Because we want to have customized initialization function and support shared boost libraries at the same time, // we are forced to customize the entry point. // see: https://www.boost.org/doc/libs/1_67_0/libs/test/doc/html/boost_test/adv_scenarios/shared_lib_customizations/init_func.html int main(int argc, char* argv[]) { - auto init_unit_test = []() -> bool { init_unit_test_suite(0, nullptr); return true; }; - return boost::unit_test::unit_test_main(init_unit_test, argc, argv); + return ::boost::unit_test::unit_test_main(solidity_init_unit_test_suite, argc, argv); } - -#endif