neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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)