接续 88dd570,保存 W20–W24 已实现的共享接口、业务入口、迁移、工作台、测试与文档。 W20/W22/W23 保持 in_progress,W21/W24 保持 verified;此提交不宣称方法或规则正式启用、多轮返修、真实角色评测完成。 W25 新增实验、标定、逐调用交付与角色执行及其迁移/测试/索引留在实施工作树,原有私人和旧实现保留项不纳入。 验证:离线 571、前端 33 通过;PG 469 项通过、2 项浏览器未启用,2 项误带入的 W25 用例已移出本提交;最终任务与交付边界 37 项通过。make 检查、最终类型、84 项资源及 diff 检查通过。未重跑浏览器或 Pi 宿主,不以合成调用认证外部模型效果。 独立整体审查四维通过;证据保存在 R2-20260909/提交W20-W24。
1.9 KiB
1.9 KiB
测试隔离规则
权威合同:
docs/系统架构/新版设计/验证设计/测试用例重写.md、改造计划/执行与验收.md;机械门禁:tests/conftest.py(OS 进程隔离 + 用例选择 + 全跳过守卫)、工具/维护索引.py。
- 默认离线:默认测试进程由 macOS sandbox 或 Linux seccomp 禁止外部连接,覆盖收集阶段、数据库驱动及其子进程;防护不可用时失败,不退回无防护执行。显式外部用例使用
--外部环境与环境标记选择。 - 显式外部环境:需要隔离 PostgreSQL 的用例标记
数据库并使用隔离数据库URL夹具;缺MUSE_TEST_DATABASE_URL时直接失败,不跳过或回退旧库。 实际Pi循环另标记宿主,通过make 宿主测试显式提供固定Node与Pi包路径;普通数据库测试剔除此标记。宿主验证使用合成提供方,不等于真实模型验证。 - 用例身份:完整
case_id与清单中的实际文件、符号及参数行绑定,不靠名称后缀匹配;pytest --case TC-…选择用例,--case 'TC-…[参数ID]'选择参数行。同符号承接多个 ID 时必须分别绑定无交叠参数。未知 ID、目标缺失与冒用均失败;Junit 留存完整 ID 和参数 ID。 - 可判定性:用例体内必须有 assert/raise/fail/skip/xfail;纯 print 用例被索引检查在执行前拦截。
- 空收集不通过:零收集(退出码 5)、全跳过(守卫改写退出码 5)、超时与失败都如实呈现;不得以返回码 0 掩盖。
- 替身显式标记:协议替身、模型替身、宿主替身必须在用例名或文档串标明;替身通过不宣称真实链路通过。
- 新旧收集分离:新用例只放
tests/单元|契约|集成|架构|迁移|端到端/;旧测试树由.venv-旧与旧 harness 运行,两套互不接管。