mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 01:42:58 +01:00
cmake: Add Python-based tests
This commit is contained in:
parent
3d85379570
commit
a8a2e364ac
@ -351,6 +351,15 @@ try_append_cxx_flags("-fno-extended-identifiers" TARGET core_interface SKIP_LINK
|
|||||||
# -fstack-reuse=none for all gcc builds. (Only gcc understands this flag).
|
# -fstack-reuse=none for all gcc builds. (Only gcc understands this flag).
|
||||||
try_append_cxx_flags("-fstack-reuse=none" TARGET core_interface)
|
try_append_cxx_flags("-fstack-reuse=none" TARGET core_interface)
|
||||||
|
|
||||||
|
find_package(Python3 3.9 COMPONENTS Interpreter)
|
||||||
|
if(Python3_EXECUTABLE)
|
||||||
|
set(PYTHON_COMMAND ${Python3_EXECUTABLE})
|
||||||
|
else()
|
||||||
|
list(APPEND configure_warnings
|
||||||
|
"Minimum required Python not found. Utils and rpcauth tests are disabled."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
endif()
|
endif()
|
||||||
@ -362,11 +371,15 @@ endif()
|
|||||||
# - https://github.com/bitcoin/bitcoin/pull/30312#issuecomment-2191235833
|
# - https://github.com/bitcoin/bitcoin/pull/30312#issuecomment-2191235833
|
||||||
set(CMAKE_SKIP_BUILD_RPATH TRUE)
|
set(CMAKE_SKIP_BUILD_RPATH TRUE)
|
||||||
set(CMAKE_SKIP_INSTALL_RPATH TRUE)
|
set(CMAKE_SKIP_INSTALL_RPATH TRUE)
|
||||||
|
add_subdirectory(test)
|
||||||
|
|
||||||
include(cmake/crc32c.cmake)
|
include(cmake/crc32c.cmake)
|
||||||
include(cmake/leveldb.cmake)
|
include(cmake/leveldb.cmake)
|
||||||
include(cmake/minisketch.cmake)
|
include(cmake/minisketch.cmake)
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|
||||||
|
include(cmake/tests.cmake)
|
||||||
|
|
||||||
message("\n")
|
message("\n")
|
||||||
message("Configure summary")
|
message("Configure summary")
|
||||||
message("=================")
|
message("=================")
|
||||||
|
15
cmake/tests.cmake
Normal file
15
cmake/tests.cmake
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Copyright (c) 2023-present The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or https://opensource.org/license/mit/.
|
||||||
|
|
||||||
|
if(TARGET bitcoin-util AND TARGET bitcoin-tx AND PYTHON_COMMAND)
|
||||||
|
add_test(NAME util_test_runner
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env BITCOINUTIL=$<TARGET_FILE:bitcoin-util> BITCOINTX=$<TARGET_FILE:bitcoin-tx> ${PYTHON_COMMAND} ${PROJECT_BINARY_DIR}/test/util/test_runner.py
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PYTHON_COMMAND)
|
||||||
|
add_test(NAME util_rpcauth_test
|
||||||
|
COMMAND ${PYTHON_COMMAND} ${PROJECT_BINARY_DIR}/test/util/rpcauth-test.py
|
||||||
|
)
|
||||||
|
endif()
|
48
test/CMakeLists.txt
Normal file
48
test/CMakeLists.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# Copyright (c) 2023-present The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or https://opensource.org/license/mit/.
|
||||||
|
|
||||||
|
function(create_test_config)
|
||||||
|
set(abs_top_srcdir ${PROJECT_SOURCE_DIR})
|
||||||
|
set(abs_top_builddir ${PROJECT_BINARY_DIR})
|
||||||
|
set(EXEEXT ${CMAKE_EXECUTABLE_SUFFIX})
|
||||||
|
|
||||||
|
macro(set_configure_variable var conf_var)
|
||||||
|
if(${var})
|
||||||
|
set(${conf_var}_TRUE "")
|
||||||
|
else()
|
||||||
|
set(${conf_var}_TRUE "#")
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
set_configure_variable(ENABLE_WALLET ENABLE_WALLET)
|
||||||
|
set_configure_variable(WITH_SQLITE USE_SQLITE)
|
||||||
|
set_configure_variable(WITH_BDB USE_BDB)
|
||||||
|
set_configure_variable(BUILD_CLI BUILD_BITCOIN_CLI)
|
||||||
|
set_configure_variable(BUILD_UTIL BUILD_BITCOIN_UTIL)
|
||||||
|
set_configure_variable(BUILD_WALLET_TOOL BUILD_BITCOIN_WALLET)
|
||||||
|
set_configure_variable(BUILD_DAEMON BUILD_BITCOIND)
|
||||||
|
set_configure_variable(BUILD_FUZZ_BINARY ENABLE_FUZZ_BINARY)
|
||||||
|
set_configure_variable(WITH_ZMQ ENABLE_ZMQ)
|
||||||
|
set_configure_variable(ENABLE_EXTERNAL_SIGNER ENABLE_EXTERNAL_SIGNER)
|
||||||
|
set_configure_variable(WITH_USDT ENABLE_USDT_TRACEPOINTS)
|
||||||
|
|
||||||
|
configure_file(config.ini.in config.ini @ONLY)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
create_test_config()
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/functional)
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fuzz)
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/util)
|
||||||
|
|
||||||
|
file(GLOB_RECURSE functional_tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} functional/*)
|
||||||
|
foreach(script ${functional_tests} fuzz/test_runner.py util/rpcauth-test.py util/test_runner.py)
|
||||||
|
if(CMAKE_HOST_WIN32)
|
||||||
|
set(symlink)
|
||||||
|
else()
|
||||||
|
set(symlink SYMBOLIC)
|
||||||
|
endif()
|
||||||
|
file(CREATE_LINK ${CMAKE_CURRENT_SOURCE_DIR}/${script} ${CMAKE_CURRENT_BINARY_DIR}/${script} COPY_ON_ERROR ${symlink})
|
||||||
|
endforeach()
|
||||||
|
unset(functional_tests)
|
@ -595,7 +595,7 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
|
|||||||
print(f"{BOLD[1]}WARNING!{BOLD[0]} There may be insufficient free space in {tmpdir} to run the Bitcoin functional test suite. "
|
print(f"{BOLD[1]}WARNING!{BOLD[0]} There may be insufficient free space in {tmpdir} to run the Bitcoin functional test suite. "
|
||||||
f"Running the test suite with fewer than {min_space // (1024 * 1024)} MB of free space might cause tests to fail.")
|
f"Running the test suite with fewer than {min_space // (1024 * 1024)} MB of free space might cause tests to fail.")
|
||||||
|
|
||||||
tests_dir = src_dir + '/test/functional/'
|
tests_dir = build_dir + '/test/functional/'
|
||||||
# This allows `test_runner.py` to work from an out-of-source build directory using a symlink,
|
# This allows `test_runner.py` to work from an out-of-source build directory using a symlink,
|
||||||
# a hard link or a copy on any platform. See https://github.com/bitcoin/bitcoin/pull/27561.
|
# a hard link or a copy on any platform. See https://github.com/bitcoin/bitcoin/pull/27561.
|
||||||
sys.path.append(tests_dir)
|
sys.path.append(tests_dir)
|
||||||
|
Loading…
Reference in New Issue
Block a user