Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14865237
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
View Options
diff --git a/cmake/modules/TestSuite.cmake b/cmake/modules/TestSuite.cmake
index 9e08031309..2e9c8d567b 100644
--- a/cmake/modules/TestSuite.cmake
+++ b/cmake/modules/TestSuite.cmake
@@ -1,39 +1,80 @@
# Allow to easily build test suites
macro(create_test_suite NAME)
- enable_testing()
set(TARGET "check-${NAME}")
- add_custom_target(${TARGET} COMMAND ${CMAKE_CTEST_COMMAND})
+ add_custom_target(${TARGET}
+ COMMENT "Running ${NAME} test suite"
+ COMMAND cmake -E echo "PASSED: ${NAME} test suite"
+ )
# If the magic target check-all exists, attach to it.
if(TARGET check-all)
add_dependencies(check-all ${TARGET})
endif()
endmacro(create_test_suite)
+set(TEST_RUNNER_TEMPLATE "${CMAKE_CURRENT_LIST_DIR}/../templates/TestRunner.cmake.in")
+function(_add_test_runner SUITE NAME COMMAND)
+ set(TARGET "test-${NAME}")
+ set(LOG "${NAME}.log")
+ set(RUNNER "${CMAKE_CURRENT_BINARY_DIR}/run-${NAME}.sh")
+ list(JOIN ARGN " " ARGS)
+
+ configure_file(
+ "${TEST_RUNNER_TEMPLATE}"
+ "${RUNNER}"
+ )
+
+ add_custom_target(${TARGET}
+ COMMAND ${RUNNER}
+ COMMENT "${SUITE}: testing ${NAME}"
+ DEPENDS
+ ${COMMAND}
+ ${RUNNER}
+ )
+ add_dependencies("check-${SUITE}" ${TARGET})
+endfunction()
+
function(add_test_to_suite SUITE NAME)
add_executable(${NAME} EXCLUDE_FROM_ALL ${ARGN})
- add_test(${NAME} ${NAME})
- add_dependencies("check-${SUITE}" ${NAME})
+ _add_test_runner(${SUITE} ${NAME} ${NAME})
endfunction(add_test_to_suite)
function(add_boost_unit_tests_to_suite SUITE NAME)
- add_test_to_suite(${SUITE} ${NAME} ${ARGN})
+ cmake_parse_arguments(ARG
+ ""
+ ""
+ "TESTS"
+ ${ARGN}
+ )
+
+ add_executable(${NAME} EXCLUDE_FROM_ALL ${ARG_UNPARSED_ARGUMENTS})
+ add_dependencies("check-${SUITE}" ${NAME})
+
+ foreach(_test_source ${ARG_TESTS})
+ target_sources(${NAME} PRIVATE "${_test_source}")
+ get_filename_component(_test_name "${_test_source}" NAME_WE)
+ _add_test_runner(
+ ${SUITE}
+ ${_test_name}
+ ${NAME} -t "${_test_name}"
+ )
+ endforeach()
find_package(Boost 1.58 REQUIRED unit_test_framework)
target_link_libraries(${NAME} Boost::unit_test_framework)
# We need to detect if the BOOST_TEST_DYN_LINK flag is required
include(CheckCXXSourceCompiles)
set(CMAKE_REQUIRED_LIBRARIES Boost::unit_test_framework)
check_cxx_source_compiles("
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
" BOOST_TEST_DYN_LINK)
if(BOOST_TEST_DYN_LINK)
target_compile_definitions(${NAME} PRIVATE BOOST_TEST_DYN_LINK)
endif(BOOST_TEST_DYN_LINK)
endfunction(add_boost_unit_tests_to_suite)
diff --git a/cmake/templates/TestRunner.cmake.in b/cmake/templates/TestRunner.cmake.in
new file mode 100755
index 0000000000..6da59dceee
--- /dev/null
+++ b/cmake/templates/TestRunner.cmake.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+"./${COMMAND}" ${ARGS} > "${LOG}" 2>&1 || (cat "${LOG}" && exit 1)
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
index c118982bae..d5eec8eaa4 100644
--- a/src/test/CMakeLists.txt
+++ b/src/test/CMakeLists.txt
@@ -1,191 +1,193 @@
# Copyright (c) 2018 The Bitcoin developers
project(bitcoin-test)
option(TEST_WITH_UPGRADE_ACTIVATED "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")
function(gen_json_header NAME)
set(HEADERS "")
foreach(f ${ARGN})
set(h "${CMAKE_CURRENT_BINARY_DIR}/${f}.h")
# Get the proper name for the test variable.
get_filename_component(TEST_NAME ${f} NAME_WE)
add_custom_command(OUTPUT ${h}
COMMAND
"${PYTHON_EXECUTABLE}"
"${CMAKE_CURRENT_SOURCE_DIR}/data/generate_header.py"
"${TEST_NAME}"
"${CMAKE_CURRENT_SOURCE_DIR}/${f}" > ${h}
MAIN_DEPENDENCY ${f}
DEPENDS
"data/generate_header.py"
VERBATIM
)
list(APPEND HEADERS ${h})
endforeach(f)
set(${NAME} "${HEADERS}" PARENT_SCOPE)
endfunction()
gen_json_header(JSON_HEADERS
data/base58_encode_decode.json
data/blockfilters.json
data/key_io_valid.json
data/key_io_invalid.json
data/script_tests.json
data/sighash.json
data/tx_invalid.json
data/tx_valid.json
)
include(TestSuite)
create_test_suite(bitcoin)
add_dependencies(check check-bitcoin)
add_boost_unit_tests_to_suite(bitcoin test_bitcoin
- activation_tests.cpp
- addrman_tests.cpp
- allocator_tests.cpp
- amount_tests.cpp
- arith_uint256_tests.cpp
- avalanche_tests.cpp
- base32_tests.cpp
- base58_tests.cpp
- base64_tests.cpp
- bip32_tests.cpp
- bitmanip_tests.cpp
- blockchain_tests.cpp
- blockcheck_tests.cpp
- blockencodings_tests.cpp
- blockfilter_tests.cpp
- blockindex_tests.cpp
- blockstatus_tests.cpp
- bloom_tests.cpp
- bswap_tests.cpp
- cashaddr_tests.cpp
- cashaddrenc_tests.cpp
- checkdatasig_tests.cpp
- checkpoints_tests.cpp
- checkqueue_tests.cpp
- coins_tests.cpp
- compress_tests.cpp
- config_tests.cpp
- core_io_tests.cpp
- crypto_tests.cpp
- cuckoocache_tests.cpp
- dbwrapper_tests.cpp
- denialofservice_tests.cpp
- descriptor_tests.cpp
- dstencode_tests.cpp
- excessiveblock_tests.cpp
- feerate_tests.cpp
- finalization_tests.cpp
- flatfile_tests.cpp
- getarg_tests.cpp
- hash_tests.cpp
- inv_tests.cpp
jsonutil.cpp
- key_io_tests.cpp
- key_tests.cpp
- lcg_tests.cpp
- limitedmap_tests.cpp
- mempool_tests.cpp
- merkle_tests.cpp
- merkleblock_tests.cpp
- miner_tests.cpp
- monolith_opcodes_tests.cpp
- multisig_tests.cpp
- net_tests.cpp
- netbase_tests.cpp
- pmt_tests.cpp
- policyestimator_tests.cpp
- pow_tests.cpp
- prevector_tests.cpp
- radix_tests.cpp
- raii_event_tests.cpp
- random_tests.cpp
- rcu_tests.cpp
- reverselock_tests.cpp
- rpc_tests.cpp
- rpc_server_tests.cpp
- rwcollection_tests.cpp
- sanity_tests.cpp
- scheduler_tests.cpp
- schnorr_tests.cpp
- script_bitfield_tests.cpp
- script_commitment_tests.cpp
- script_p2sh_tests.cpp
- script_standard_tests.cpp
- script_tests.cpp
scriptflags.cpp
- scriptnum_tests.cpp
- serialize_tests.cpp
- sigcache_tests.cpp
- sigencoding_tests.cpp
- sighash_tests.cpp
- sighashtype_tests.cpp
- sigopcount_tests.cpp
sigutil.cpp
- skiplist_tests.cpp
- streams_tests.cpp
- sync_tests.cpp
test_bitcoin.cpp
test_bitcoin_main.cpp
- timedata_tests.cpp
- torcontrol_tests.cpp
- transaction_tests.cpp
- txindex_tests.cpp
- txvalidation_tests.cpp
- txvalidationcache_tests.cpp
- uint256_tests.cpp
- undo_tests.cpp
- util_tests.cpp
- validation_block_tests.cpp
- validation_tests.cpp
- work_comparator_tests.cpp
-
- # RPC Tests
- ../rpc/test/server_tests.cpp
# Tests generated from JSON
${JSON_HEADERS}
+
+ TESTS
+ activation_tests.cpp
+ addrman_tests.cpp
+ allocator_tests.cpp
+ amount_tests.cpp
+ arith_uint256_tests.cpp
+ avalanche_tests.cpp
+ base32_tests.cpp
+ base58_tests.cpp
+ base64_tests.cpp
+ bip32_tests.cpp
+ bitmanip_tests.cpp
+ blockchain_tests.cpp
+ blockcheck_tests.cpp
+ blockencodings_tests.cpp
+ blockfilter_tests.cpp
+ blockindex_tests.cpp
+ blockstatus_tests.cpp
+ bloom_tests.cpp
+ bswap_tests.cpp
+ cashaddr_tests.cpp
+ cashaddrenc_tests.cpp
+ checkdatasig_tests.cpp
+ checkpoints_tests.cpp
+ checkqueue_tests.cpp
+ coins_tests.cpp
+ compress_tests.cpp
+ config_tests.cpp
+ core_io_tests.cpp
+ crypto_tests.cpp
+ cuckoocache_tests.cpp
+ dbwrapper_tests.cpp
+ denialofservice_tests.cpp
+ descriptor_tests.cpp
+ dstencode_tests.cpp
+ excessiveblock_tests.cpp
+ feerate_tests.cpp
+ finalization_tests.cpp
+ flatfile_tests.cpp
+ getarg_tests.cpp
+ hash_tests.cpp
+ inv_tests.cpp
+ key_io_tests.cpp
+ key_tests.cpp
+ lcg_tests.cpp
+ limitedmap_tests.cpp
+ mempool_tests.cpp
+ merkle_tests.cpp
+ merkleblock_tests.cpp
+ miner_tests.cpp
+ monolith_opcodes_tests.cpp
+ multisig_tests.cpp
+ net_tests.cpp
+ netbase_tests.cpp
+ pmt_tests.cpp
+ policyestimator_tests.cpp
+ pow_tests.cpp
+ prevector_tests.cpp
+ radix_tests.cpp
+ raii_event_tests.cpp
+ random_tests.cpp
+ rcu_tests.cpp
+ reverselock_tests.cpp
+ rpc_tests.cpp
+ rpc_server_tests.cpp
+ rwcollection_tests.cpp
+ sanity_tests.cpp
+ scheduler_tests.cpp
+ schnorr_tests.cpp
+ script_bitfield_tests.cpp
+ script_commitment_tests.cpp
+ script_p2sh_tests.cpp
+ script_standard_tests.cpp
+ script_tests.cpp
+ scriptnum_tests.cpp
+ serialize_tests.cpp
+ sigcache_tests.cpp
+ sigencoding_tests.cpp
+ sighash_tests.cpp
+ sighashtype_tests.cpp
+ sigopcount_tests.cpp
+ skiplist_tests.cpp
+ streams_tests.cpp
+ sync_tests.cpp
+ timedata_tests.cpp
+ torcontrol_tests.cpp
+ transaction_tests.cpp
+ txindex_tests.cpp
+ txvalidation_tests.cpp
+ txvalidationcache_tests.cpp
+ uint256_tests.cpp
+ undo_tests.cpp
+ util_tests.cpp
+ validation_block_tests.cpp
+ validation_tests.cpp
+ work_comparator_tests.cpp
+
+ # RPC Tests
+ ../rpc/test/server_tests.cpp
)
if (TEST_WITH_UPGRADE_ACTIVATED)
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)
else()
target_link_libraries(test_bitcoin bitcoinconsensus)
endif()
if(BUILD_BITCOIN_WALLET)
target_sources(test_bitcoin
PRIVATE
../wallet/test/accounting_tests.cpp
../wallet/test/coinselector_tests.cpp
../wallet/test/psbt_wallet_tests.cpp
../wallet/test/wallet_test_fixture.cpp
../wallet/test/wallet_tests.cpp
../wallet/test/walletdb_tests.cpp
../wallet/test/wallet_crypto_tests.cpp
)
endif()
add_executable(test_bitcoin_fuzzy EXCLUDE_FROM_ALL
test_bitcoin_fuzzy.cpp
)
target_link_libraries(test_bitcoin_fuzzy server)
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Thu, May 22, 03:24 (15 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5866372
Default Alt Text
(9 KB)
Attached To
rSTAGING Bitcoin ABC staging
Event Timeline
Log In to Comment