补齐 SpacetimeDB 模块单元测试门禁
Project CI / Repository checks (pull_request) Successful in 3m47s
Project CI / Frontend tests (pull_request) Successful in 5m54s
Project CI / Backend tests (pull_request) Successful in 8m38s
Project CI / Native shell tests (pull_request) Successful in 15m27s

将 spacetime-module 单元测试独立纳入 Backend CI

增加 host 测试期 SpacetimeDB ABI 链接支持

同步 CI 流程测试与开发运维文档说明
This commit is contained in:
2026-08-30 12:26:46 +08:00
parent e85119c672
commit 82a05bef86
5 changed files with 204 additions and 2 deletions
@@ -62,4 +62,4 @@ SpacetimeDB 任务统一先读取 `.codex/skills/genarrative-spacetimedb/SKILL.m
## Gitea CI 依赖闭合
`.gitea/workflows/project-ci.yml` 的 `Native shell tests` 在运行原生壳门禁前,必须使用 `cargo fetch --locked` 预取 `server-rs/Cargo.toml`、桌面壳和 AGC 壳三份依赖。Backend workspace host tests 暂时使用 `cargo test --locked --workspace --exclude spacetime-module --no-fail-fast`:`spacetime-module` 是依赖 SpacetimeDB WASM 宿主导出的 `cdylib`,不能链接成普通 host test executable;Backend 仍通过独立的 `cargo check --locked -p spacetime-module` 验证模块源码。该排除只是 CI 适配,不代表模块测试永久取消;恢复前需要提供 SpacetimeDB runtime/integration harness,或把纯 host 可测逻辑拆到独立 crate,并补回对应测试门禁。AGC 壳检查还会运行 `platform-llm` 与 `shared-contracts` 的 server-rs workspace 测试,这些命令以及 AGC 壳测试必须带 `--locked`,避免在测试阶段重新解析 registry index;锁文件发生变化时应先更新受信任 CI 镜像缓存,再重跑门禁。
`.gitea/workflows/project-ci.yml` 的 `Native shell tests` 在运行原生壳门禁前,必须使用 `cargo fetch --locked` 预取 `server-rs/Cargo.toml`、桌面壳和 AGC 壳三份依赖。Backend host workspace tests 使用 `cargo test --locked --workspace --exclude spacetime-module --no-fail-fast`,避免 `spacetime-module` 的 `spacetime-types` feature 统一污染普通领域 crate 的 host 测试;随后单独执行 `cargo test --locked -p spacetime-module --no-fail-fast`,由 `spacetime-module/src/active.rs` 在 host 测试构建期间提供仅测试期的 SpacetimeDB ABI 链接支持,使该 crate 的纯单元测试也纳入 Backend 门禁。`spacetime-module` 的 reducer / procedure 运行时行为仍必须通过真实 SpacetimeDB runtime/integration harness 验证,host 链接支持不得被当作运行时替身。Backend 另外执行 `cargo check --locked -p spacetime-module` 验证模块源码。AGC 壳检查还会运行 `platform-llm` 与 `shared-contracts` 的 server-rs workspace 测试,这些命令以及 AGC 壳测试必须带 `--locked`,避免在测试阶段重新解析 registry index;锁文件发生变化时应先更新受信任 CI 镜像缓存,再重跑门禁。