# ============================================================ # tests — 单元测试 # ============================================================ add_executable(dstalk_smoke_test smoke_test.cpp ) target_link_libraries(dstalk_smoke_test PRIVATE dstalk ) add_test(NAME dstalk_smoke_test COMMAND dstalk_smoke_test) # ============================================================ # dstalk_host_api_test — host API 单元测试 # ============================================================ add_executable(dstalk_host_api_test host_api_test.cpp ${CMAKE_SOURCE_DIR}/dstalk_core/src/service_registry.cpp ) target_include_directories(dstalk_host_api_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/src ) target_compile_features(dstalk_host_api_test PRIVATE cxx_std_17 ) target_link_libraries(dstalk_host_api_test PRIVATE dstalk ) add_test(NAME dstalk_host_api_test COMMAND dstalk_host_api_test) # ============================================================ # dstalk_event_bus_test — EventBus 单元测试 # ============================================================ add_executable(dstalk_event_bus_test event_bus_test.cpp ${CMAKE_SOURCE_DIR}/dstalk_core/src/event_bus.cpp ) target_include_directories(dstalk_event_bus_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/src ) target_compile_features(dstalk_event_bus_test PRIVATE cxx_std_17 ) add_test(NAME dstalk_event_bus_test COMMAND dstalk_event_bus_test) # ============================================================ # dstalk_service_registry_test — ServiceRegistry 补充单元测试 # ============================================================ add_executable(dstalk_service_registry_test service_registry_test.cpp ${CMAKE_SOURCE_DIR}/dstalk_core/src/service_registry.cpp ) target_include_directories(dstalk_service_registry_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/src ) target_compile_features(dstalk_service_registry_test PRIVATE cxx_std_17 ) add_test(NAME dstalk_service_registry_test COMMAND dstalk_service_registry_test) # ============================================================ # dstalk_context_plugin_test — Context 插件单元测试 # W18.1 (qa-wang + architect-lin): 覆盖 token 计数/trim/UTF-8 边界 # ============================================================ add_executable(dstalk_context_plugin_test context_plugin_test.cpp ) target_link_libraries(dstalk_context_plugin_test PRIVATE dstalk ) add_test(NAME dstalk_context_plugin_test COMMAND dstalk_context_plugin_test) # ============================================================ # dstalk_plugin_loader_test — PluginLoader 安全回归测试 # W20.3 (qa-xu): 覆盖 W19 F-18.3-1~5 修复验证 # ============================================================ add_executable(dstalk_plugin_loader_test plugin_loader_test.cpp ${CMAKE_SOURCE_DIR}/dstalk_core/src/plugin_loader.cpp ${CMAKE_SOURCE_DIR}/dstalk_core/src/service_registry.cpp ${CMAKE_SOURCE_DIR}/dstalk_core/src/boost_json.cpp ) target_include_directories(dstalk_plugin_loader_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/src ) target_compile_features(dstalk_plugin_loader_test PRIVATE cxx_std_17 ) find_package(Boost REQUIRED CONFIG) target_compile_definitions(dstalk_plugin_loader_test PRIVATE BOOST_JSON_HEADER_ONLY BOOST_ALL_NO_LIB DSTALK_TEST_PLUGINS_DIR="${CMAKE_BINARY_DIR}/plugins" ) target_link_libraries(dstalk_plugin_loader_test PRIVATE dstalk boost::boost ) add_test(NAME dstalk_plugin_loader_test COMMAND dstalk_plugin_loader_test) # ============================================================ # dstalk_anthropic_plugin_test — Anthropic AI 插件单元测试 # W21.6 (qa-wang): 通过 #include source 访问 static 函数 # ============================================================ add_executable(dstalk_anthropic_plugin_test anthropic_plugin_test.cpp ) target_include_directories(dstalk_anthropic_plugin_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/include PRIVATE ${CMAKE_SOURCE_DIR}/plugins_upper/ai_common/include ) target_compile_definitions(dstalk_anthropic_plugin_test PRIVATE BOOST_JSON_HEADER_ONLY BOOST_ALL_NO_LIB ) find_package(Boost REQUIRED CONFIG) target_link_libraries(dstalk_anthropic_plugin_test PRIVATE dstalk ai_common boost::boost ) add_test(NAME dstalk_anthropic_plugin_test COMMAND dstalk_anthropic_plugin_test) # ============================================================ # dstalk_openai_plugin_test — OpenAI 兼容 AI 插件单元测试 # W21.6 (qa-wang): 通过 #include source 访问 static 函数 # ============================================================ add_executable(dstalk_openai_plugin_test openai_plugin_test.cpp ) target_include_directories(dstalk_openai_plugin_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/include PRIVATE ${CMAKE_SOURCE_DIR}/plugins_upper/ai_common/include ) target_compile_definitions(dstalk_openai_plugin_test PRIVATE BOOST_JSON_HEADER_ONLY BOOST_ALL_NO_LIB ) find_package(Boost REQUIRED CONFIG) target_link_libraries(dstalk_openai_plugin_test PRIVATE dstalk ai_common boost::boost ) add_test(NAME dstalk_openai_plugin_test COMMAND dstalk_openai_plugin_test) # ============================================================ # dstalk_endpoint_mgr_plugin_test — AI endpoint manager 插件单元测试 # 覆盖: endpoint 加载/列表脱敏/active/model 修改/路由 # ============================================================ add_executable(dstalk_endpoint_mgr_plugin_test endpoint_mgr_plugin_test.cpp ) target_include_directories(dstalk_endpoint_mgr_plugin_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/include PRIVATE ${CMAKE_SOURCE_DIR}/plugins_upper/ai_common/include ) target_compile_definitions(dstalk_endpoint_mgr_plugin_test PRIVATE BOOST_JSON_HEADER_ONLY BOOST_ALL_NO_LIB ) find_package(Boost REQUIRED CONFIG) target_link_libraries(dstalk_endpoint_mgr_plugin_test PRIVATE dstalk ai_common boost::boost ) add_test(NAME dstalk_endpoint_mgr_plugin_test COMMAND dstalk_endpoint_mgr_plugin_test) # ============================================================ # dstalk_network_plugin_test — Network 插件单元测试 # W22.2 (qa-xu): 通过 #include source 访问 static 函数 # ============================================================ find_package(OpenSSL REQUIRED CONFIG) add_executable(dstalk_network_plugin_test network_plugin_test.cpp ) target_include_directories(dstalk_network_plugin_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/include ) target_compile_definitions(dstalk_network_plugin_test PRIVATE BOOST_ALL_NO_LIB ) find_package(Boost REQUIRED CONFIG) target_link_libraries(dstalk_network_plugin_test PRIVATE dstalk boost::boost openssl::openssl ) add_test(NAME dstalk_network_plugin_test COMMAND dstalk_network_plugin_test) # ============================================================ # dstalk_lsp_plugin_test — LSP 插件单元测试 (hand-rolled CHECK, 新增) # 覆盖: lsp_trim / lsp_frame_message / lsp_parse_content_length # ============================================================ add_executable(dstalk_lsp_plugin_test lsp_plugin_test.cpp ${CMAKE_SOURCE_DIR}/plugins_base/lsp/src/lsp_plugin.cpp ) target_include_directories(dstalk_lsp_plugin_test PRIVATE ${CMAKE_SOURCE_DIR}/dstalk_core/include ${CMAKE_SOURCE_DIR}/plugins_base/lsp/src ) target_compile_definitions(dstalk_lsp_plugin_test PRIVATE BOOST_JSON_HEADER_ONLY BOOST_ALL_NO_LIB ) target_compile_features(dstalk_lsp_plugin_test PRIVATE cxx_std_17 ) find_package(Boost REQUIRED CONFIG) target_link_libraries(dstalk_lsp_plugin_test PRIVATE dstalk boost::boost ) add_test(NAME dstalk_lsp_plugin_test COMMAND dstalk_lsp_plugin_test) # ============================================================ # coverage — gcovr 覆盖率报告 (HTML + 终端摘要) # 用法: cmake --build