Skip to content

Commit 154fac0

Browse files
docs: W9's hosts, editors and mcppls as implemented
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
1 parent 059d97b commit 154fac0

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

‎.agents/docs/2026-11-08-ecosystem-top-level-design.md‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,18 +223,20 @@ mcpp 对自身清单键已有完整的同类机制:`kDeprecations` 注册表
223223
| 协议 | 版本 1 内只增字段(P9.2):P3.3 的 `timeout`、`isolation`、`retries`、`diagnose`,未声明类别的用例取其程序的类别;P3.4 的 `begin` 可带 `kind`、`tags`、`clauses`,以及作用域规则;P5.2 的 `fixture` |
224224
| 类别的次序 | 代码的声明(类型或 `kind::`)、`mtest.toml`、程序所在目录(`tests/unit`、`tests/e2e`、`tests/cts`、`tests/bench`,docs/layout.md)、unit;`mtest list`、`list --static`、`run` 给出相同的类别 |
225225
| `mtest.toml` | `[cases."glob"]` 取库的属性词汇:`kind`、`tags`、`clauses`、`resources`、`artifacts`、`timeout`、`isolation`、`retries`、`diagnose`、`skip`、`expect_fail`;程序声明的优先,列表取并集(0.2 中文件优先) |
226-
| 静态清单 | 识别对象类型、对象的属性与 `resource`、`clause`、`artifact`;运行时才可判断的(`skip_if` 的条件、时限)留给程序的列举 |
226+
| 静态清单 | 独立的包 `mcpplibs.mtest.manifest`:读测试的工具(引擎、编辑器)依赖它而不链接测试程序的库。识别对象类型、文件自己从中派生的类型(`class Fixture : public CTS`)、对象的属性与 `resource`、`clause`、`artifact`;运行时才可判断的(`skip_if` 的条件、时限、派生类型在构造中添加的属性)留给程序的列举 |
227227
| 适配器 | Bash(`--timeout`、`--isolate`、`--retries`、`--diagnose-env`、`--diagnose-timeout`)与 C ABI 表达相同的属性,未声明类别时不再写出 unit |
228228

229+
**宿主与编辑器。** mcpp(#906):`mcpp new` 的骨架以 `UTest` 写出;`--case` 在列举的用例之下选择其声明的用例(P3.4)——不含通配符的名字原样传给程序,含通配符的模式运行该列举的用例整体(`test_protocol::selection`,e2e 1038 F)。mcpp-ide 后端 1.2.1:mtest 的用例以 `mcpplibs.mtest.manifest` 读出,删去后端自己的读取,0.3 的对象在构建前即可见。
230+
229231
**mcppls 的一致性(#79)。**
230232

231-
- 一致性为工作区成员 `tests/cts`:运行器为模块 `mcppls.conformance`(由 `src/bin/conformance.cpp` 移出);一个 fixture 或一个变体为一个 `CTS` 对象,变体以选项表达(`{.client = polling}`),平台以 `skip_if`,计时的 fixture 以 `resource{"machine"}`,服务端日志以 `diagnose`;用例在进程内调用运行器,每个未通过的检查为一个 `expect` 失败,带检查的编号与原因。
232-
- 运行器校验声明与内容一致:检查限定答复时间(`answer-within`、`within-ms`、`within-seconds`、`within`、`budget`、`initialize-within`,或 stress、typing、tokens-latency)的 fixture,其用例未持有 `machine` 即失败并说明。
233+
- 一致性为工作区成员 `tests/cts`(程序 `mcppls-cts`,与运行器一同进入 `stage/`):一个 fixture 或一个变体为一个 `Fixture` 对象(`CTS` 的派生类型,带服务端日志的 `diagnose`),名字中 `@` 之后为客户端变体,平台以自定义属性 `on{...}`(标签 `on:<平台>`),计时的 fixture 以 `resource{"machine"}`;用例以 `mcppls-conformance run` 运行其 fixture,读取其度量文件,每个未通过的检查为一个 `expect` 失败,带检查的编号与原因。运行器保持为单个 fixture 的命令行,服务端模块不链接测试库。
234+
- 用例 `the cases and the fixtures agree` 以静态清单读 `conformance.cpp`:每个用例命名一个存在的 fixture;检查限定答复时间(`answer-within`、`within-ms`、`within-seconds`、`within`、`budget`、`initialize-within`,或 stress、typing、tokens-latency)的 fixture,其用例未持有 `machine` 即失败并说明。
233235
- fixture 移至 `tests/cts/fixtures`;`scenario.json` 保留 fixture 自身的内容(项目、prepare、`requires-mcpp`、`requires-cmake`、检查序列);变体、资源、平台与分组只在代码中。`requires-cmake` 使 prepare 步骤先找到所需的 CMake,服务端保持主机的 PATH,`msvc-bdb.env` 不再需要。
234-
- 单元测试移至 `tests/unit`。
235-
- CI:一致性矩阵的每一行为 `mtest run --isolate --jobs N --shard i/n` 加类别或套件的选择;ci、nightly、release-checks 中直接运行 fixture 的其余调用改为选中对应用例;存储跨运行缓存,`--shard` 由此得到历史耗时。`mtest.toml`、`.github/scripts/run-fixture.sh` 与 6 张清单表删除。
236+
- 单元测试移至 `tests/unit`,以 mtest 写出(`mcppls-testing` 删除,各成员的测试同样迁移):仓库中只有一套测试框架。
237+
- CI:一致性矩阵的每一行为 `mtest run --isolate --jobs 2 --tag on:<平台> [--shard i/2]`;行内其余步骤(工具链、xmake、mcpp 的数据库校验)读 `mtest plan` 给出的该行用例;首次运行导入 main 上一次成功运行的该平台各部分的存储,两个部分以相同的历史划分;第二次尝试只重跑失败的用例。`mtest.toml`、`.github/scripts/run-fixture.sh` 与 6 张清单表删除。以特定条件运行单个 fixture 的作业(共享缓存的冷热启动、PRoot、发布的负载)直接调用运行器。
236238

237-
**依赖。** mtest 0.3.0 → mcpp-index(#732 增加 0.3.0 的条目)→ mcpp `kMtestRelease = "0.3.0"`(#906)与 mcppls #79。mcppls 的运行器模块化与目录迁移不依赖新接口,在 mtest 的 CI 期间进行。
239+
**依赖。** mtest 0.3.0 → mcpp-index(#732 增加 `mcpplibs.mtest`、`.manifest`、`.gtest`、`.capi` 0.3.0 的条目)→ mcpp `kMtestRelease = "0.3.0"`(#906)、mcppls #79、mcpp-ide 后端 1.2.1。mcppls 的运行器模块化与目录迁移不依赖新接口,在 mtest 的 CI 期间进行。
238240

239241
**判据。** 既有的 mtest 程序不改即构建并给出相同的列举;同一用例的静态清单与运行时列举的类别、资源一致(mtest 的测试比较二者);mcppls 的一致性在 CI 中只由代码与 fixture 目录描述,仓库中不再有用例的清单文件。
240242

0 commit comments

Comments
 (0)