1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
# Make sure pytest is installed
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "import pytest; print(pytest.__version__)"
RESULT_VARIABLE pytest_not_found
OUTPUT_VARIABLE pytest_version
ERROR_QUIET
)
if(pytest_not_found)
message(WARNING "Running the tests requires pytest. Please install it manually"
" (try: ${PYTHON_EXECUTABLE} -m pip install pytest)"
)
set(DARTPY_PYTEST_FOUND FALSE)
elseif(pytest_version VERSION_LESS 3.0)
message(WARNING "Running the tests requires pytest >= 3.0. Found: ${pytest_version}"
"Please update it (try: ${PYTHON_EXECUTABLE} -m pip install -U pytest)"
)
set(DARTPY_PYTEST_FOUND FALSE)
else()
set(DARTPY_PYTEST_FOUND TRUE)
endif()
set(dartpy_test_utils
util.py
)
file(GLOB_RECURSE dartpy_test_files "test_*.py")
# Add custom target to run the tests
add_custom_target(pytest
COMMAND ${CMAKE_COMMAND} -E echo "Running pytest by: PYTHONPATH=${DART_DARTPY_BUILD_DIR} ${PYTHON_EXECUTABLE} -m pytest [sources]"
COMMAND PYTHONPATH=${DART_DARTPY_BUILD_DIR} ${PYTHON_EXECUTABLE} -m pytest ${dartpy_test_files} -v
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
SOURCES ${dartpy_test_files} ${dartpy_test_utils}
DEPENDS dartpy
)
#===============================================================================
# Usage:
# dartpy_add_test(test_name) # assumed source is test_name.py
# dartpy_add_test(test_name main.py)
#===============================================================================
function(dartpy_add_test test_name) # ARGN for source file
if(${ARGC} GREATER 1)
set(source ${ARGN})
else()
set(source "${test_name}.py")
endif()
add_custom_target(${test_name}
COMMAND ${CMAKE_COMMAND} -E echo "Running pytest by: PYTHONPATH=${DART_DARTPY_BUILD_DIR} ${PYTHON_EXECUTABLE} ${source}"
COMMAND PYTHONPATH=${DART_DARTPY_BUILD_DIR} ${PYTHON_EXECUTABLE} ${source}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
SOURCES ${source}
DEPENDS dartpy
)
endfunction()
foreach(dartpy_test_file ${dartpy_test_files})
get_filename_component(dartpy_test_name ${dartpy_test_file} NAME_WE)
dartpy_add_test(py_${dartpy_test_name} ${dartpy_test_file})
endforeach()
|