文档开发

Rust · 0.1.0

测试

先运行针对性检查,再执行变更涉及的完整检查。

本地检查

编辑时先运行针对性测试,再执行适用的较完整检查。以下是仓库命令,不代表你的源码已经通过。前端检查在 web/ 下执行,生成协议变更还需要独立的格式和漂移验证。

cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked

cd web
pnpm lint
pnpm test
pnpm build

数据库契约测试可能破坏数据

PostgreSQL 与 MySQL 存储契约测试需要真实的隔离测试库,并在测试环境明确允许重置结构。绝不能使用生产连接信息或需要保留的数据库。仅 SQLite 测试不能证明网络数据库行为;仅主机测试也不能证明容器、ARM 或 Windows 行为。

报告边界

记录准确源码版本、命令与结果,区分通过、失败、跳过和未执行。界面修改除正常流程外,还要检查键盘及移动端、中断流程与重复操作。仅生成这些静态文档不需要触发 CI。

按改动职责选择检查

编辑时可以先运行针对性单元测试,但完成改动时需要覆盖受影响的检查。后端汇总脚本会写入日志,也会检查协议及验收证据。应阅读第一个失败阶段,不要把后续未执行阶段当作通过。

改动应包含的检查
Rust 行为格式、Clippy、针对性行为测试及 workspace 测试
数据库行为SQLite 及相关真实 PostgreSQL/MySQL 契约测试
网页界面pnpm lint、pnpm test、pnpm build 与浏览器流程
协议定义Buf 校验、格式、生成差异以及使用方测试
容器或入口脚本入口脚本检查及目标运行镜像、平台检查

运行后端汇总检查

从仓库根目录运行。可选参数指定日志目录。检查包含格式、Clippy、workspace 测试、驱动超时测试、契约检查及验收比较。缺少外部前置条件时应明确报告阻碍,不应删除对应检查。

bash scripts/rust/check.sh target/verification

显式启用一次性网络数据库测试

这些测试可能删除数据库结构。只能使用没有真实记录的专用一次性 PostgreSQL 和 MySQL 数据库,并通过自己的凭据管理方式分别设置 POSTGRES_TEST_URL 与 MYSQL_TEST_URL。test-store.sh 要求显式重置标志。脚本会串行运行被默认忽略的 network_ 测试,普通 workspace 测试不覆盖这些用例。

: "${POSTGRES_TEST_URL:?Set the disposable PostgreSQL test database URL}"
AMEMOS_TEST_DATABASE_URL="$POSTGRES_TEST_URL" \
AMEMOS_TEST_ALLOW_SCHEMA_RESET=1 \
  bash scripts/rust/test-store.sh postgres

: "${MYSQL_TEST_URL:?Set the disposable MySQL test database URL}"
AMEMOS_TEST_DATABASE_URL="$MYSQL_TEST_URL" \
AMEMOS_TEST_ALLOW_SCHEMA_RESET=1 \
  bash scripts/rust/test-store.sh mysql

检查浏览器流程并说明覆盖范围

界面改动应明确初始状态,实际执行任务,并在刷新后验证保存结果。按需要覆盖窄屏与键盘访问、取消和返回、错误以及重复点击。报告实际测试的浏览器和流程。构建通过不能证明编辑器、弹窗或移动布局可用。