优化
This commit is contained in:
@@ -825,7 +825,7 @@ ctest --test-dir build --output-on-failure
|
||||
|
||||
测试使用 `backend/test_support/adminive_test.hpp` 的 `ADMINIVE_CHECK`,不会像标准 `assert()` 一样在 Release `NDEBUG` 下被移除。旧的 `Synchronized_Value`/`Resource_Lock_Scope` 测试实现已经删除;仍有意义的嵌套同步、无锁字段、读写能力和多线程序列化用例由当前 `Managed_Value` 测试覆盖,不恢复旧 API。
|
||||
|
||||
CTest 使用 label 区分 `unit`、`protocol`、`http`、`install`、`package`、`header`、`concurrency`、`managed` 等测试。全部 Adminive Core 公共头和 5 个 Service Adapter 公共头都注册独立 include 编译测试,避免 umbrella header 掩盖缺失依赖。`Adminive_Install_Consumer_Test` 会先安装到构建目录内的固定测试 prefix,再从独立 `install_consumer` 工程只通过 `find_package(Adminive)` 同时构建 `Adminive::Core` 与 `Adminive::Default`/Httplib consumer。`Adminive_Package_Zip_Test` 会实际生成源码 ZIP,验证根目录精确文件匹配、无残留嵌套工程且已删除的旧同步实现不会重新进入发布包。
|
||||
CTest 使用 label 区分 `unit`、`protocol`、`http`、`install`、`package`、`header`、`concurrency`、`managed` 等测试。全部 Adminive Core 公共头和 5 个 Service Adapter 公共头都注册独立 include 编译测试,避免 umbrella header 掩盖缺失依赖。`Adminive_Install_Consumer_Test` 会先安装到构建目录内的固定测试 prefix,再从独立 `install_consumer` 工程只通过 `find_package(Adminive)` 同时构建 `Adminive::Core` 与 `Adminive::Default`/Httplib consumer。安装包不再把仓库内置的 nlohmann/json、magic_enum、cpp-httplib 复制到公共 include 命名空间;测试会用独立依赖 package fixture 验证导出目标确实通过 `find_dependency` 解析外部依赖,并检查安装 prefix 中不存在这些 bundled header。`Adminive_Package_Zip_Test` 会实际生成源码 ZIP,验证根目录精确文件匹配、release/license metadata、无残留嵌套工程且已删除的旧同步实现不会重新进入发布包。
|
||||
|
||||
Clang/GNU sanitizer:
|
||||
|
||||
@@ -846,6 +846,14 @@ MSVC 配置 UBSan 或 TSan 会在 CMake 配置阶段明确失败,不允许出
|
||||
python .\scripts\verify.py
|
||||
```
|
||||
|
||||
正式发布环境安装了真实 Drogon 与 nlohmann_json CMake package 时,再执行:
|
||||
|
||||
```powershell
|
||||
python .\scripts\verify.py --real-drogon
|
||||
```
|
||||
|
||||
这个选项会在 Release 构建中启用真实 Drogon adapter target 和真实 installed-package consumer;默认 fake Drogon contract test 不冒充这一 Gate。
|
||||
|
||||
Gate 使用固定 `verification/debug`、`verification/release`、`verification/asan-ubsan` 和 `verification/tsan` 路径。Clang/GNU 运行 Debug/Release 全构建和 CTest、ASan+UBSan Core/Service 矩阵、TSan concurrency、前端依赖/单测/production build、Playwright Chromium E2E;Windows MSVC 只运行真实 ASan,并明确输出 UBSan/TSan SKIP,额外运行 `msedge` channel。Sanitizer 矩阵覆盖 Core Adapter、Advanced Adapter、Safety、Managed、View Schema、Drogon 和真实 Httplib,不把耗时的示例 Gallery 重复做 sanitizer 构建。前端 E2E 覆盖导航、同一 Manifest 五种布局、display/create/edit、Collection CRUD/分页/排序/搜索/筛选/状态/重排/错误、422 nested validation、Sensitive 输出过滤、Object Adapter transaction counter、Transaction rollback、状态轮询序列、协议边界和缓存头。需要把前端测试注册进 CTest 时配置 `ADMINIVE_ENABLE_FRONTEND_TESTS=ON`。
|
||||
|
||||
安装并通过 CMake 包使用:
|
||||
@@ -861,6 +869,8 @@ find_package(Adminive CONFIG REQUIRED COMPONENTS Drogon)
|
||||
target_link_libraries(drogon_app PRIVATE Adminive::Drogon)
|
||||
```
|
||||
|
||||
安装后的 Adapter component 使用外部 CMake package:`Nlohmann` 解析 `nlohmann_json::nlohmann_json`,`MagicEnum` 解析 `magic_enum::magic_enum`,`Httplib` 解析 `httplib::httplib`,`BoostPfr` 解析 `Boost::headers`,`Drogon` 解析 `Drogon::Drogon`。仓库内置的前三个 header 只服务源码树 build/test,不安装到消费者的通用 include 目录。完整规则见 `RELEASE.md`。
|
||||
|
||||
MSVC 消费者默认接收 `/utf-8` 和 `/Zc:__cplusplus`。`/permissive-` 只用于 Adminive 自身目标;确实需要传播时配置 `ADMINIVE_PROPAGATE_MSVC_STRICT_MODE=ON`。
|
||||
|
||||
访问:
|
||||
@@ -886,3 +896,7 @@ add_project_zip_target(
|
||||
adminive_package_excludes
|
||||
)
|
||||
```
|
||||
|
||||
## Release and third-party policy
|
||||
|
||||
See `RELEASE.md` for source-tree versus installed-package dependency rules and the real Drogon release gate. Redistributed dependency notices and license texts are listed in `THIRD_PARTY_NOTICES.md`. The repository does not currently declare an outbound license for Adminive/Structive project-owned code.
|
||||
|
||||
Reference in New Issue
Block a user