summaryrefslogtreecommitdiff
path: root/tests/smoke.cmake
blob: b741d4bc32df637fb7d149864e1e32f80703ef06 (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
if(NOT DEFINED SERVER OR NOT EXISTS "${SERVER}")
  message(FATAL_ERROR "SERVER does not name a built tiny-convmem-mcp executable")
endif()
if(NOT DEFINED INPUT OR NOT EXISTS "${INPUT}")
  message(FATAL_ERROR "INPUT does not name the smoke-test fixture")
endif()

execute_process(
  COMMAND "${SERVER}"
  INPUT_FILE "${INPUT}"
  OUTPUT_VARIABLE server_output
  ERROR_VARIABLE server_error
  RESULT_VARIABLE server_result
  TIMEOUT 10
)

if(NOT server_result EQUAL 0)
  message(FATAL_ERROR
    "Server exited with ${server_result}.\nstdout: ${server_output}\nstderr: ${server_error}"
  )
endif()

foreach(expected
    "\"protocolVersion\":\"2024-11-05\""
    "\"serverInfo\""
    "\"capabilities\""
    "\"name\":\"health\""
    "\"type\":\"text\""
    "\"text\":\"ok\""
  )
  string(FIND "${server_output}" "${expected}" match_position)
  if(match_position EQUAL -1)
    message(FATAL_ERROR
      "Expected ${expected} in MCP output.\nstdout: ${server_output}\nstderr: ${server_error}"
    )
  endif()
endforeach()

message(STATUS "MCP initialize, tools/list, and health tools/call succeeded")