diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -2,6 +2,8 @@ project(bitcoin-test) +option(TEST_UPGRADE "Run unit tests with the next upgrade activated in addition to regular tests" OFF) + # Process json files. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/data") @@ -152,6 +154,16 @@ ${JSON_HEADERS} ) +if (TEST_UPGRADE) + add_test( + NAME + "bitcoin-upgrade-activated" + COMMAND + "test_bitcoin" + "-gravitonactivationtime=1573819200" + ) +endif() + target_link_libraries(test_bitcoin rpcclient server) if(TARGET bitcoinconsensus-shared) target_link_libraries(test_bitcoin bitcoinconsensus-shared) diff --git a/src/test/activation_tests.cpp b/src/test/activation_tests.cpp --- a/src/test/activation_tests.cpp +++ b/src/test/activation_tests.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -26,14 +27,15 @@ CBlockIndex prev; const Consensus::Params ¶ms = Params().GetConsensus(); - const auto activation = params.gravitonActivationTime; - - BOOST_CHECK(!IsGravitonEnabled(params, nullptr)); + const auto activation = + gArgs.GetArg("-gravitonactivationtime", params.gravitonActivationTime); + SetMockTime(activation - 1000000); std::array blocks; for (size_t i = 1; i < blocks.size(); ++i) { blocks[i].pprev = &blocks[i - 1]; } + BOOST_CHECK(!IsGravitonEnabled(params, &blocks.back())); SetMTP(blocks, activation - 1); BOOST_CHECK(!IsGravitonEnabled(params, &blocks.back())); diff --git a/src/test/test_bitcoin_main.cpp b/src/test/test_bitcoin_main.cpp --- a/src/test/test_bitcoin_main.cpp +++ b/src/test/test_bitcoin_main.cpp @@ -3,9 +3,11 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #define BOOST_TEST_MODULE Bitcoin Test Suite +#define BOOST_TEST_NO_MAIN #include #include +#include #include @@ -23,3 +25,22 @@ bool ShutdownRequested() { return false; } + +int main(int argc, char *argv[], char *envp[]) { + // Whitelisting BOOST test framework CLI params that we use: + gArgs.AddArg("-log_level", "", false, OptionsCategory::HIDDEN); + gArgs.AddArg("-l", "", false, OptionsCategory::HIDDEN); + gArgs.AddArg("-run_test", "", false, OptionsCategory::HIDDEN); + gArgs.AddArg("-t", "", false, OptionsCategory::HIDDEN); + + // Additional CLI params supported by test_bitcoin: + gArgs.AddArg("-gravitonactivationtime", "", false, OptionsCategory::HIDDEN); + + std::string error; + if (!gArgs.ParseParameters(argc, argv, error)) { + fprintf(stderr, "Error parsing command line arguments: %s\n", + error.c_str()); + return EXIT_FAILURE; + } + return boost::unit_test::unit_test_main(&init_unit_test, argc, argv); +}