CMakeLists.txt (2916B)
1 add_subdirectory(functional/fixtures) # compile test programs 2 3 get_directory_property(TEST_INCLUDE_DIRS DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITION TEST_INCLUDE_DIRS) 4 5 set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 6 set(TEST_OPTIONS 7 -D BUILD_DIR=${CMAKE_BINARY_DIR} 8 -D CIRRUS_CI=$ENV{CIRRUS_CI} 9 -D CI_BUILD=${CI_BUILD} 10 -D DEPS_INSTALL_DIR=${DEPS_INSTALL_DIR} 11 -D NVIM_PRG=$<TARGET_FILE:nvim_bin> 12 -D TEST_DIR=${TEST_DIR} 13 -D ROOT_DIR=${PROJECT_SOURCE_DIR}) 14 15 check_lua_module(${LUA_PRG} "ffi" LUA_HAS_FFI) 16 if(LUA_HAS_FFI) 17 add_custom_target(unittest 18 COMMAND ${CMAKE_COMMAND} 19 -D TEST_TYPE=unit 20 ${TEST_OPTIONS} 21 -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake 22 USES_TERMINAL) 23 add_dependencies(unittest lua_dev_deps nvim) 24 else() 25 message(WARNING "disabling unit tests: no Luajit FFI in ${LUA_PRG}") 26 endif() 27 28 configure_file( 29 ${CMAKE_SOURCE_DIR}/test/cmakeconfig/paths.lua.in 30 ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua) 31 32 add_custom_target(benchmark 33 COMMAND ${CMAKE_COMMAND} 34 -D TEST_TYPE=benchmark 35 ${TEST_OPTIONS} 36 -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake 37 DEPENDS tty-test 38 USES_TERMINAL) 39 add_dependencies(benchmark lua_dev_deps nvim) 40 41 add_custom_target(functionaltest 42 COMMAND ${CMAKE_COMMAND} 43 -D TEST_TYPE=functional 44 ${TEST_OPTIONS} 45 -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake 46 DEPENDS printenv-test printargs-test shell-test pwsh-test streams-test tty-test 47 USES_TERMINAL) 48 add_dependencies(functionaltest lua_dev_deps nvim) 49 50 # Create multiple targets for groups of functional tests to enable parallel testing. 51 set(group_targets "") 52 set(summary_files "") 53 file(GLOB_RECURSE test_files RELATIVE "${TEST_DIR}/functional" "${TEST_DIR}/functional/*_spec*") 54 foreach(test_file ${test_files}) 55 # Get test group: "test/functional/foo/bar_spec.lua" => "foo". 56 string(REGEX REPLACE "/.*" "" test_group ${test_file}) 57 set(group_target "functionaltest_${test_group}") 58 string(REGEX REPLACE "[^A-Za-z0-9_]" "_" group_target ${group_target}) 59 list(FIND group_targets ${group_target} group_idx) 60 if(${group_idx} EQUAL -1) 61 # Create new target for test group. 62 set(summary_file "${CMAKE_BINARY_DIR}/${group_target}.summary") 63 add_custom_target(${group_target} 64 COMMAND ${CMAKE_COMMAND} 65 -D TEST_TYPE=functional -D TEST_PARALLEL_GROUP=${test_group} -D TEST_SUMMARY_FILE=${summary_file} 66 ${TEST_OPTIONS} 67 -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake 68 DEPENDS printenv-test printargs-test shell-test pwsh-test streams-test tty-test) 69 add_dependencies(${group_target} lua_dev_deps nvim) 70 list(APPEND group_targets ${group_target}) 71 list(APPEND summary_files ${summary_file}) 72 endif() 73 endforeach() 74 75 add_custom_target(functionaltest_parallel DEPENDS ${group_targets}) 76 add_custom_target(functionaltest_summary COMMAND ${CMAKE_COMMAND} -E cat ${summary_files} USES_TERMINAL)