#adds makes target/script into a test, test to check target, sets necessary environment variables
function(add_ceph_test test_name test_path)
- add_test(NAME ${test_name} COMMAND ${test_path} ${ARGN})
+ add_test(NAME ${test_name} COMMAND ${test_path} ${ARGN}
+ COMMAND_EXPAND_LISTS)
if(TARGET ${test_name})
add_dependencies(tests ${test_name})
+ set_property(TARGET ${test_name}
+ PROPERTY EXCLUDE_FROM_ALL TRUE)
endif()
- set_property(TEST
- ${test_name}
+ set_property(TEST ${test_name}
PROPERTY ENVIRONMENT
CEPH_ROOT=${CMAKE_SOURCE_DIR}
CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules/lib.3:${CMAKE_SOURCE_DIR}/src/pybind
CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV})
# none of the tests should take more than 1 hour to complete
- set_property(TEST
- ${test_name}
+ set_property(TEST ${test_name}
PROPERTY TIMEOUT ${CEPH_TEST_TIMEOUT})
endfunction()
SOURCE_DIR "${gtest_parallel_source_dir}"
GIT_REPOSITORY "https://github.com/google/gtest-parallel.git"
GIT_TAG "master"
+ GIT_SHALLOW TRUE
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND "")
add_dependencies(tests gtest-parallel_ext)
- find_package(Python3 QUIET REQUIRED)
set(GTEST_PARALLEL_COMMAND
${Python3_EXECUTABLE} ${gtest_parallel_source_dir}/gtest-parallel)
endif()
#sets uniform compiler flags and link libraries
function(add_ceph_unittest unittest_name)
set(UNITTEST "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name}")
- # If the second argument is "parallel", it means we want a parallel run
- if(WITH_GTEST_PARALLEL AND "${ARGV1}" STREQUAL "parallel")
+ cmake_parse_arguments(UT "PARALLEL" "" "" ${ARGN})
+ if(WITH_GTEST_PARALLEL AND UT_PARALLEL)
set(UNITTEST ${GTEST_PARALLEL_COMMAND} ${UNITTEST})
endif()
- add_ceph_test(${unittest_name} "${UNITTEST}")
+ add_ceph_test(${unittest_name} "${UNITTEST}" ${UT_UNPARSED_ARGUMENTS})
target_link_libraries(${unittest_name} ${UNITTEST_LIBS})
endfunction()
else()
set(tox_path ${CMAKE_CURRENT_SOURCE_DIR})
endif()
- list(APPEND tox_envs py3)
if(DEFINED TOXTEST_TOX_ENVS)
list(APPEND tox_envs ${TOXTEST_TOX_ENVS})
+ else()
+ list(APPEND tox_envs py3)
endif()
string(REPLACE ";" "," tox_envs "${tox_envs}")
- find_package(Python3 QUIET REQUIRED)
- add_custom_command(
- OUTPUT ${venv_path}/bin/activate
- COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python="${Python3_EXECUTABLE}" ${venv_path}
- WORKING_DIRECTORY ${tox_path}
- COMMENT "preparing venv for ${name}")
- add_custom_target(${name}-venv
- DEPENDS ${venv_path}/bin/activate)
- add_dependencies(tests ${name}-venv)
+ add_test(
+ NAME setup-venv-for-${name}
+ COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${Python3_EXECUTABLE} ${venv_path}
+ WORKING_DIRECTORY ${tox_path})
+ set_tests_properties(setup-venv-for-${name} PROPERTIES
+ FIXTURES_SETUP venv-for-${name})
+ add_test(
+ NAME teardown-venv-for-${name}
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${venv_path})
+ set_tests_properties(teardown-venv-for-${name} PROPERTIES
+ FIXTURES_CLEANUP venv-for-${name})
add_test(
NAME ${test_name}
COMMAND ${CMAKE_SOURCE_DIR}/src/script/run_tox.sh
--tox-path ${tox_path}
--tox-envs ${tox_envs}
--venv-path ${venv_path})
+ set_tests_properties(${test_name} PROPERTIES
+ FIXTURES_REQUIRED venv-for-${name})
set_property(
TEST ${test_name}
PROPERTY ENVIRONMENT