发现于 objectui#3352 的验证环节 —— 不在该单范围内(#3352 只动 3 处成功包络读点),按 Prime Directive #10 单独记录,不认领。
现象
packages/app-shell/package.json 的 test 脚本是裸的 vitest run。从包目录跑时(即 pnpm --filter @object-ui/app-shell test 的实际行为),vitest 把 root 定为 packages/app-shell,根级 projects(unit / dom / dom-heavy)的 include 因此匹配不到任何东西,只有以路径引用进来的 apps/console project 仍然解析成功。结果:
$ cd packages/app-shell && pnpm exec vitest run
RUN v4.1.10 /home/user/objectui-issue-3352/packages/app-shell
Test Files 22 passed (22)
Tests 208 passed (208)
这 22 个文件全部属于 @object-ui/console,不是 app-shell 的:
$ cd packages/app-shell && pnpm exec vitest list
[@object-ui/console] src/LocalizationFetchProvider.test.tsx > ...
[@object-ui/console] src/LocalizationFetchProvider.test.tsx > ...
而 app-shell 自己有 276 个测试文件(find packages/app-shell/src -name '*.test.ts*' | wc -l → 276)。从仓根按目录过滤才真的跑到它们:
$ pnpm exec vitest run packages/app-shell/
Test Files 276 passed (276)
Tests 2414 passed | 1 skipped (2415)
为什么值得收
它产生的是一个假绿,而不是一个报错。 输出格式完全正常(22 passed),没有任何 "0 tests matched" 之类的信号;一个按包级约定验证的 agent 会据此报告「app-shell 整包绿」,实际上该包一个测试都没跑。这与 #3288(--run 路径过滤被静默忽略)是同一族失效模式:命令看起来成功了,覆盖面却悄悄塌了。危险面在于它恰好跑出 208 个别的包的通过用例,数量级看着像回事。
与 #3240 相关但不同:#3240 问的是「17 个带本地 vitest.config.ts 的包里哪些真的需要」;本单是一个不带本地 config 的包,正因为没有本地 config 才 fall through 到收集别人的 project。#3240 的裁定大概率会覆盖到这里的修法,但两者的完成范围不重合,故单独立案。
复现
cd packages/app-shell && pnpm exec vitest list | head # 全是 [@object-ui/console]
可能的方向(留给认领者判断)
顺带:AGENTS.md 目前只钉了 #3288 那条陷阱(路径过滤被忽略),没覆盖本条(包级 test 跑成别的包)。修完值得补一句。
发现于 objectui#3352 的验证环节 —— 不在该单范围内(#3352 只动 3 处成功包络读点),按 Prime Directive #10 单独记录,不认领。
现象
packages/app-shell/package.json的test脚本是裸的vitest run。从包目录跑时(即pnpm --filter @object-ui/app-shell test的实际行为),vitest 把 root 定为packages/app-shell,根级 projects(unit/dom/dom-heavy)的 include 因此匹配不到任何东西,只有以路径引用进来的apps/consoleproject 仍然解析成功。结果:这 22 个文件全部属于
@object-ui/console,不是 app-shell 的:而 app-shell 自己有 276 个测试文件(
find packages/app-shell/src -name '*.test.ts*' | wc -l→ 276)。从仓根按目录过滤才真的跑到它们:为什么值得收
它产生的是一个假绿,而不是一个报错。 输出格式完全正常(
22 passed),没有任何 "0 tests matched" 之类的信号;一个按包级约定验证的 agent 会据此报告「app-shell 整包绿」,实际上该包一个测试都没跑。这与 #3288(--run路径过滤被静默忽略)是同一族失效模式:命令看起来成功了,覆盖面却悄悄塌了。危险面在于它恰好跑出 208 个别的包的通过用例,数量级看着像回事。与 #3240 相关但不同:#3240 问的是「17 个带本地 vitest.config.ts 的包里哪些真的需要」;本单是一个不带本地 config 的包,正因为没有本地 config 才 fall through 到收集别人的 project。#3240 的裁定大概率会覆盖到这里的修法,但两者的完成范围不重合,故单独立案。
复现
可能的方向(留给认领者判断)
test脚本改成从仓根按路径跑(vitest run --root ../.. packages/app-shell/),或test脚本的存废(与 17 个包各自带 vitest.config.ts 与根 vitest.config.mts 行为分叉:先回答「哪些包真的需要本地配置」 #3240 一并),或顺带:AGENTS.md 目前只钉了 #3288 那条陷阱(路径过滤被忽略),没覆盖本条(包级
test跑成别的包)。修完值得补一句。