Skip to content

FNOS-028 测试用例 ​

字段内容
需求编号FNOS-028
关联计划PLAN-FNOS-028
覆盖功能FNOS-028-01 至 FNOS-028-07
测试状态验收通过(2026-10-25:提出人确认需求验收通过)
用例总数24
通过22
部分通过0
未执行2(真机升级 AC 与 npm latest AC,见结论)
测试环境仓库本地(macOS arm64 / Node 24)、真实终端交互验收、fnpack 本地构建解包

用例与结果 ​

版本统一(FNOS-028-01) ​

用例步骤预期结果状态
TC-001盘点根/docs/packages×5/tooling/插件×8 的 version 字段全部为 5.10.016 处全部 5.10.0(含 local-only codebuddy)通过
TC-002manifest version 行、应用文档页版本行、published 副本、总览表格与安装命令全部 5.10.0,无 6.x/小尾巴残留版本行、副本与 15 处安装命令全部 5.10.0;dshmarket@1.66.47(第三方)正确不动通过
TC-003pnpm run build -- --fpk --app fn-deepseek-harness --skip-bundle-dsh-plugins 后解包核对 FPK 内 manifestversion = 5.10.0,changelog 为本轮内容,desc 含基线字样解包核对全部一致(本地构建;真机安装见 TC-023)通过

版本命令 bumpp 化(FNOS-028-02) ​

用例步骤预期结果状态
TC-004真实终端执行 pnpm run version(无参数)弹出 bumpp 原生菜单:Current version + Commits 摘要 + 各档位预览 + custom 输入菜单完整呈现(5.10.0、12 Commits、major 6.0.0/minor 5.11.0/patch 5.10.1/next/conventional/pre-*/as-is),summary 与 Bump? 确认均原生通过
TC-005菜单/参数选定 patch 后走完整发布一次执行完成全部包与插件同号递增 + 单条 release 提交 + 本地 tagchore: release v5.10.1 单条提交 32 文件(插件/副本/安装命令/manifest/packages 全进)+ v5.10.1 tag + 工作区干净(验收后按纪律移除)通过
TC-006单测断言三档增量(patch/minor/major)与显式版本串5.10.0→5.10.1 / →5.11.0 / →6.0.0version.spec.ts 覆盖,95 用例全绿通过
TC-007传小尾巴版本串 5.10.1-0.2.1-rc.2.1 / 档位 prerelease明确报错指引,不产出半成品转发层守卫拒绝并提示纯净三段式规范通过
TC-008bumpp 菜单选 conventional-prerelease(产出 5.11.0-beta.1)并确认仓库不发布预发布版本version-sync 入口守卫拒绝含 - 目标版本并中止发布(实测堵住菜单 pre-* 档位缺口;bumpp 自身行为:确认前 files 已替换,取消后需 git checkout 还原)通过
TC-009major --baseline 0.2.2-rc.1;patch --baseline;major --baseline <当前值>baseline 仅 major 合法;spawn bumpp 前改写 catalog;非法搭配与同值拒绝单测与实测均通过;catalog 改写在确认后、bumpp 启动前完成通过
TC-010脏工作区执行版本命令拒绝发版并点名脏文件守卫实测拦截(bumpp 提交以 all 模式收口,脏改动会被卷入——硬约束必要)通过
TC-011插件与项目不同号时执行报错点名漂移插件,不静默拉平实测拦截 @tnnevol/dsh-codebuddy@…(漂移值) 并要求先统一通过
TC-012bumpp 的 npm 钩子链(根 version script 即入口自身)不得递归触发入口bump.config.ts 设 ignoreScripts: true(实测复现死循环式失败后修复);同步由 execute 钩子承担通过

插件发布与 dist-tag(FNOS-028-03) ​

用例步骤预期结果状态
TC-013文档站总览与各插件页安装命令全部 @5.10.0,与仓库版本一致15 处 @5.10.0(version-sync 每次发布自动同步,单测断言副本/总览/安装命令三处一致)通过
TC-014generationOf('5.10.0') 代际解析返回 undefined,latest 维护自然跳过、不误判单测覆盖(历史小尾巴版本的代际逻辑保留用于回滚场景)通过
TC-015npm 发布 5.10.0 并维护 dist-taglatest 指向 5.10.0,next 残留清理未执行:npm 发布不可撤回,待发布窗口由发布者执行(见结论)未执行

FPK 产物命名与基线标注(FNOS-028-04/05/06) ​

用例步骤预期结果状态
TC-016build-app.yml Rename 步骤源码审查基线构建期从 catalog 派生,无硬编码 DSH_VERSIONenv 硬编码已删除,sed 解析 catalog 行(本地实测输出 0.2.1-rc.2),解析失败即失败通过
TC-017产物命名推导fn-deepseek-harness-v5.10.0-dsh-0.2.1-rc.2.fpk命名模板 = Tag + 派生基线(CI 实际附件见 TC-024 推送 tag 后核验)通过
TC-018FPK manifest desc 基线字样「运行基线为 DSH 0.2.1-rc.2」与 catalog 一致解包核对一致;version-sync 每次发布自动对齐(含 --baseline 切换场景,单测覆盖)通过
TC-019应用文档页版本与基线双行两个独立值;基线行随发布对齐 catalog「应用版本 5.10.0」+「DSH 基线 0.2.1-rc.2」分列,过期基线(0.2.0-rc.2)已修正并纳入自动同步通过
TC-020文档站版本徽标显示纯净项目版本从 docs/package.json 读取,随发布自动更新(5.10.0)通过

校验与文档同步(FNOS-028-07) ​

用例步骤预期结果状态
TC-021发布后 git status无遗留未同步的版本文件TC-005 发布后工作区干净(32 文件全进单条提交;local-only codebuddy 正确排除在外)通过
TC-022pnpm run check(CLI 95 用例)+ pnpm run check -- --sdd + pnpm run build -- --docs + git diff --check全部通过95 用例全绿;SDD 28+28 文档通过;文档构建通过通过
TC-023真实 fnOS NAS 升级安装(5.9.0-…rc.2.x → 5.10.0)升级成功不判降级,用户数据保留未执行:属发布后真机验收(5.10.0 > 5.9.0 纯净三段比较,升级判定理论成立);待推送 v5.10.0 tag 后按 NAS 装机流程执行未执行
TC-024CI 双发布回归(v5.10.0 与后续版本)Release 附件名含项目版本与派生基线未执行:待推送 tag 触发(workflow 改动已含解析失败即失败的保护)未执行

Bug 记录 ​

编号现象根因修复验证
BUG-01local-only 插件 README 混入 git add,命令以「路径被忽略」失败localOnlyPrefixes 用 join(repositoryRoot, …) 拼绝对路径,与相对路径暂存清单的 startsWith 过滤失效改回仓库相对路径前缀(提交 fafe78d)TC-011 + 发布实测零混入
BUG-02根目录 pnpm exec bumpp 找不到命令bumpp 是 CLI 包依赖而非根 devDependency转发器直指 tooling/fnos-dsh-cli/node_modules/bumpp/bin/bumpp.mjs(.bin 内是 shell 包装脚本,node 不能直调)TC-004/005
BUG-03bumpp npm 钩子链递归触发入口(version script 即入口自身),发布死循环式失败bumpp 默认执行 preversion/version/postversionbump.config.ts 设 ignoreScripts: true,同步由 execute 钩子承担TC-012
BUG-04bumpp 菜单 pre-* 档位可产出 beta 版本,绕过纯净三段式约定菜单选项由 bumpp 提供,转发层无法预判选择version-sync(execute 钩子)入口拒绝含 - 的目标版本,失败即中止提交TC-008

最终测试结论 ​

验收通过(2026-10-25,提出人确认)。

核心链路全部实测通过:版本统一 5.10.0(16 处版本文件 + 15 处文档引用)、pnpm run version 直接调用 bumpp CLI(原生菜单/摘要/确认完整呈现)、一次发布产出单条 release 提交(32 文件含全部同步产物)+ 本地 tag、FPK 组合命名基线构建期派生、desc 基线字样自动对齐、四类守卫(脏工作区/档位语义/baseline 绑定/预发布版本)全部生效。实施中发现的 4 个缺陷(BUG-01~04)均已修复并回归。

遗留 3 项发布后动作(不阻塞需求验收,属发布窗口执行项):TC-015 npm 发布与 dist-tag 维护(不可撤回,由发布者执行)、TC-023 真机升级验收、TC-024 CI 附件命名核验——后两者待推送 v5.10.0 tag 后进行。按提出人纪律,测试性发布(v5.10.1 验收产物)已全部移除,仓库停在 5.10.0 待正式发版。

基于 VitePress 构建