aboutsummaryrefslogtreecommitdiff
path: root/test/CMakeLists.txt
blob: dc748387609e3ddc6f20069fbddebc232d65d4ba (plain) (blame)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
add_subdirectory(functional/fixtures)  # compile test programs
get_directory_property(GENERATED_HELP_TAGS DIRECTORY ${PROJECT_SOURCE_DIR}/runtime DEFINITION GENERATED_HELP_TAGS)

if(NOT BUSTED_OUTPUT_TYPE)
  set(BUSTED_OUTPUT_TYPE "nvim")
endif()

find_program(BUSTED_PRG NAMES busted busted.bat)
if(BUSTED_PRG)
  get_target_property(TEST_INCLUDE_DIRS main_lib INTERFACE_INCLUDE_DIRECTORIES)

  set(UNITTEST_PREREQS nvim)
  set(FUNCTIONALTEST_PREREQS nvim printenv-test printargs-test shell-test pwsh-test streams-test tty-test ${GENERATED_HELP_TAGS})
  set(BENCHMARK_PREREQS nvim tty-test)

  check_lua_module(${LUA_PRG} "ffi" LUA_HAS_FFI)
  if(LUA_HAS_FFI)
    add_custom_target(unittest
      COMMAND ${CMAKE_COMMAND}
        -D BUSTED_PRG=${BUSTED_PRG}
        -D LUA_PRG=${LUA_PRG}
        -D NVIM_PRG=$<TARGET_FILE:nvim>
        -D WORKING_DIR=${PROJECT_SOURCE_DIR}
        -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
        -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}
        -D BUILD_DIR=${CMAKE_BINARY_DIR}
        -D TEST_TYPE=unit
        -D CIRRUS_CI=$ENV{CIRRUS_CI}
        -D CI_BUILD=${CI_BUILD}
        -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
      DEPENDS ${UNITTEST_PREREQS}
      USES_TERMINAL)
    set_target_properties(unittest PROPERTIES FOLDER test)
  else()
    message(WARNING "disabling unit tests: no Luajit FFI in ${LUA_PRG}")
  endif()

  configure_file(
    ${CMAKE_SOURCE_DIR}/test/cmakeconfig/paths.lua.in
    ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua)

  add_custom_target(functionaltest
    COMMAND ${CMAKE_COMMAND}
      -D BUSTED_PRG=${BUSTED_PRG}
      -D LUA_PRG=${LUA_PRG}
      -D NVIM_PRG=$<TARGET_FILE:nvim>
      -D WORKING_DIR=${PROJECT_SOURCE_DIR}
      -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
      -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}
      -D BUILD_DIR=${CMAKE_BINARY_DIR}
      -D DEPS_PREFIX=${DEPS_PREFIX}
      -D TEST_TYPE=functional
      -D CIRRUS_CI=$ENV{CIRRUS_CI}
      -D CI_BUILD=${CI_BUILD}
      -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
    DEPENDS ${FUNCTIONALTEST_PREREQS}
    USES_TERMINAL)
  set_target_properties(functionaltest PROPERTIES FOLDER test)

  add_custom_target(benchmark
    COMMAND ${CMAKE_COMMAND}
      -D BUSTED_PRG=${BUSTED_PRG}
      -D LUA_PRG=${LUA_PRG}
      -D NVIM_PRG=$<TARGET_FILE:nvim>
      -D WORKING_DIR=${PROJECT_SOURCE_DIR}
      -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
      -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}
      -D BUILD_DIR=${CMAKE_BINARY_DIR}
      -D TEST_TYPE=benchmark
      -D CIRRUS_CI=$ENV{CIRRUS_CI}
      -D CI_BUILD=${CI_BUILD}
      -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
    DEPENDS ${BENCHMARK_PREREQS}
    USES_TERMINAL)
  set_target_properties(benchmark PROPERTIES FOLDER test)
endif()

find_program(BUSTED_LUA_PRG busted-lua)
if(BUSTED_LUA_PRG)
  add_custom_target(functionaltest-lua
    COMMAND ${CMAKE_COMMAND}
      -D BUSTED_PRG=${BUSTED_LUA_PRG}
      -D LUA_PRG=${LUA_PRG}
      -D NVIM_PRG=$<TARGET_FILE:nvim>
      -D WORKING_DIR=${PROJECT_SOURCE_DIR}
      -D BUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
      -D TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}
      -D BUILD_DIR=${CMAKE_BINARY_DIR}
      -D TEST_TYPE=functional
      -D CIRRUS_CI=$ENV{CIRRUS_CI}
      -D CI_BUILD=${CI_BUILD}
      -P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
    DEPENDS ${FUNCTIONALTEST_PREREQS}
    USES_TERMINAL)
    set_target_properties(functionaltest-lua PROPERTIES FOLDER test)
endif()