summaryrefslogtreecommitdiff
path: root/tests/CMakeLists.txt
blob: ad314eba1accc521cb9ef7a7fd5bc217824aae74 (plain)
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
97
98
99
100
101
102
103
104
105
106
107
108
109
add_test(
  NAME tiny-convmem-mcp.smoke
  COMMAND "${CMAKE_COMMAND}"
    "-DSERVER=$<TARGET_FILE:tiny-convmem-mcp>"
    "-DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/fixtures/smoke-input.jsonl"
    "-DDATA_DIR=${CMAKE_CURRENT_BINARY_DIR}/smoke-data"
    -P "${CMAKE_CURRENT_SOURCE_DIR}/smoke.cmake"
)

set_tests_properties(tiny-convmem-mcp.smoke PROPERTIES TIMEOUT 15)

add_executable(tiny-convmem-domain-test
  domain_test.c
  "${PROJECT_SOURCE_DIR}/src/domain/message.c"
  "${PROJECT_SOURCE_DIR}/src/domain/search.c"
)
target_include_directories(tiny-convmem-domain-test PRIVATE "${PROJECT_SOURCE_DIR}/src")
target_compile_features(tiny-convmem-domain-test PRIVATE c_std_17)
target_link_libraries(tiny-convmem-domain-test PRIVATE tiny-convmem-base)
if(MSVC)
  target_compile_options(tiny-convmem-domain-test PRIVATE /utf-8 /W4)
endif()
add_test(NAME tiny-convmem-mcp.domain COMMAND tiny-convmem-domain-test)

add_executable(tiny-convmem-boundary-test
  boundary_test.c
  "${PROJECT_SOURCE_DIR}/src/mcp/json.c"
  "${PROJECT_SOURCE_DIR}/src/storage/codec.c"
)
target_include_directories(tiny-convmem-boundary-test PRIVATE
  "${PROJECT_SOURCE_DIR}/src"
  "${CMAKE_CURRENT_SOURCE_DIR}"
)
target_compile_features(tiny-convmem-boundary-test PRIVATE c_std_17)
target_link_libraries(tiny-convmem-boundary-test PRIVATE tiny-convmem-sys tiny-convmem-base)
if(MSVC)
  target_compile_options(tiny-convmem-boundary-test PRIVATE /utf-8 /W4)
endif()
add_test(NAME tiny-convmem-mcp.boundaries COMMAND tiny-convmem-boundary-test)
foreach(boundary_group allocator encoding codec json sys)
  add_test(
    NAME "tiny-convmem-mcp.${boundary_group}"
    COMMAND tiny-convmem-boundary-test "${boundary_group}"
  )
endforeach()

add_executable(tiny-convmem-storage-test
  storage_test.c
  "${PROJECT_SOURCE_DIR}/src/domain/message.c"
  "${PROJECT_SOURCE_DIR}/src/storage/codec.c"
  "${PROJECT_SOURCE_DIR}/src/storage/store.c"
)
target_include_directories(tiny-convmem-storage-test PRIVATE "${PROJECT_SOURCE_DIR}/src")
target_compile_features(tiny-convmem-storage-test PRIVATE c_std_17)
target_link_libraries(tiny-convmem-storage-test PRIVATE tiny-convmem-sys)
if(MSVC)
  target_compile_options(tiny-convmem-storage-test PRIVATE /utf-8 /W4)
endif()
add_test(NAME tiny-convmem-mcp.storage COMMAND tiny-convmem-storage-test)

add_test(
  NAME tiny-convmem-mcp.lifecycle
  COMMAND "${CMAKE_COMMAND}"
    "-DSERVER=$<TARGET_FILE:tiny-convmem-mcp>"
    "-DWRITE_INPUT=${CMAKE_CURRENT_SOURCE_DIR}/fixtures/write-once.jsonl"
    "-DHEALTH_INPUT=${CMAKE_CURRENT_SOURCE_DIR}/fixtures/health.jsonl"
    "-DDATA_DIR=${CMAKE_CURRENT_BINARY_DIR}/lifecycle-data"
    -P "${CMAKE_CURRENT_SOURCE_DIR}/lifecycle.cmake"
)
set_tests_properties(tiny-convmem-mcp.lifecycle PROPERTIES TIMEOUT 15)

add_test(NAME tiny-convmem-mcp.requires-data-dir COMMAND $<TARGET_FILE:tiny-convmem-mcp>)
set_tests_properties(tiny-convmem-mcp.requires-data-dir PROPERTIES WILL_FAIL TRUE)

find_package(Git REQUIRED)
find_program(
  CLANG_FORMAT_EXECUTABLE
  NAMES clang-format
  HINTS "C:/Program Files/Microsoft Visual Studio/18/Community/VC/Tools/Llvm/x64/bin"
)
add_test(
  NAME tiny-convmem-mcp.audit
  COMMAND "${CMAKE_COMMAND}"
    "-DSOURCE_DIR=${PROJECT_SOURCE_DIR}"
    "-DGIT_EXECUTABLE=${GIT_EXECUTABLE}"
    "-DCLANG_FORMAT_EXECUTABLE=${CLANG_FORMAT_EXECUTABLE}"
    -P "${CMAKE_CURRENT_SOURCE_DIR}/audit.cmake"
)

if(TINY_CONVMEM_ENABLE_ASAN AND MSVC)
  get_filename_component(TINY_CONVMEM_MSVC_BIN_DIR "${CMAKE_C_COMPILER}" DIRECTORY)
  set_property(
    TEST
      tiny-convmem-mcp.smoke
      tiny-convmem-mcp.domain
      tiny-convmem-mcp.boundaries
      tiny-convmem-mcp.allocator
      tiny-convmem-mcp.encoding
      tiny-convmem-mcp.codec
      tiny-convmem-mcp.json
      tiny-convmem-mcp.sys
      tiny-convmem-mcp.storage
      tiny-convmem-mcp.lifecycle
      tiny-convmem-mcp.requires-data-dir
      tiny-convmem-mcp.audit
    APPEND PROPERTY ENVIRONMENT_MODIFICATION
      "PATH=path_list_prepend:${TINY_CONVMEM_MSVC_BIN_DIR}"
  )
endif()