@fantasticit/sumi 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/create",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Sumi 脚手架与项目模板(由 sumi init 调用)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,6 +10,8 @@ export interface BaseInfo {
10
10
  /**
11
11
  * 确定基准:显式参数或配置的 ref 必须存在;否则取与上游的合并基础;
12
12
  * 没有上游时取 HEAD;连提交都没有时取空树。
13
+ * 显式参数原样使用(调用方给出的就是算好的基准);配置的 ref 是分支的比较目标,
14
+ * 取它与 HEAD 的合并基础,目标分支前进后未 rebase 的分支不会把目标上的新提交算作改动。
13
15
  */
14
16
  export declare function resolveBase(root: string, config: SumiConfig, override?: string): BaseInfo;
15
17
  /** 工作区中纳入摘要与检查的文件:已跟踪且存在的文件 + 未跟踪且未被忽略的文件,排除运行目录。 */
@@ -31,6 +31,8 @@ export function assertGitRepo(root) {
31
31
  /**
32
32
  * 确定基准:显式参数或配置的 ref 必须存在;否则取与上游的合并基础;
33
33
  * 没有上游时取 HEAD;连提交都没有时取空树。
34
+ * 显式参数原样使用(调用方给出的就是算好的基准);配置的 ref 是分支的比较目标,
35
+ * 取它与 HEAD 的合并基础,目标分支前进后未 rebase 的分支不会把目标上的新提交算作改动。
34
36
  */
35
37
  export function resolveBase(root, config, override) {
36
38
  const ref = override ?? config.base;
@@ -38,7 +40,9 @@ export function resolveBase(root, config, override) {
38
40
  const oid = tryGit(root, ['rev-parse', '--verify', '--quiet', `${ref}^{commit}`]);
39
41
  if (!oid)
40
42
  throw new KernelError(`基准 ${ref} 不存在。可用 --base <ref> 或在项目配置中设置 base`);
41
- return { oid };
43
+ if (override)
44
+ return { oid };
45
+ return { oid: tryGit(root, ['merge-base', 'HEAD', oid]) ?? oid };
42
46
  }
43
47
  const head = tryGit(root, ['rev-parse', '--verify', '--quiet', 'HEAD']);
44
48
  if (!head)
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc;IAC7C,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;QAC/B,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,cAAc;KAC1B,CAAC,CAAC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;AAClH,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAkB,EAAE,QAAiB;IAC7E,MAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC;IACpC,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,qCAAqC,CAAC,CAAC;QAChF,IAAI,QAAQ;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IACnF,IAAI,QAAQ;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IACzF,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,CAAC,0BAA0B,EAAE,0BAA0B,EAAE,4BAA4B,CAAC,EAAE,CAAC;QACzG,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,IAAI,IAAI;YAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC/C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACpG,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAmB;IAC5D,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/H,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAmB,EAAE,MAAc;IACpF,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9G,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SACxC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAkB,SAAS,CAAC,IAAI,CAAC;IAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,KAAK;gBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,kCAAkC;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,SAAS;QACjC,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,IAAI,GAAG,QAAQ,CAAC;YAChB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAAE,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;iBACnE,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK;gBAAE,IAAI,GAAG,QAAQ,CAAC;YAC5C,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAA2B,EAAE,IAAY;IAC/D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAOD,iCAAiC;AACjC,MAAM,UAAU,UAAU,CAAC,MAAkB,EAAE,KAAe,EAAE,SAAkB;IAChF,IAAI,IAAI,GAAG,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;IACzC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YAClE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/kernel",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "策略中立的编排内核",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.0",
16
+ "@sumi/plugin-sdk": "0.5.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugin-sdk",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "插件协议类型与 SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2,37 +2,80 @@
2
2
 
3
3
  通用检查插件包:格式、lint、类型检查、受影响的测试、覆盖率、层边界、control 文档执行者检查、AI 工具适配漂移、指标棘轮,以及包装已有脚本的 `core/exec`;另注册纳管命令 `adopt` 与基线命令 `baseline`。
4
4
 
5
- 插件不自带工具。prettier、eslint、tsc、vitest、c8 由项目安装,插件按下面的顺序查找:先找步骤 `with.binDir` 指定的目录,再从仓库根向上找 `node_modules/.bin`。找不到工具时步骤结论为 `skipped`,并提示安装。修复命令只从当前目录向上查找 `node_modules/.bin`,不读 `binDir`。
5
+ 插件不自带工具。prettier、eslint、tsc、vitest、c8 由项目安装,插件按下面的顺序查找:先找步骤 `with.binDir` 指定的目录,再从仓库根向上找 `node_modules/.bin`(core/test-affected 例外:从项目目录解析 `vitest/node`,不读 `binDir`)。找不到工具时步骤结论为 `skipped`,并提示安装(core/test-affected 只在单仓模式下如此,见下文)。清单中的 `needs` 是声明性的,说明插件依赖的工具,内核不据此检查。修复命令只从当前目录向上查找 `node_modules/.bin`,不读 `binDir`。
6
6
 
7
7
  ## 插件
8
8
 
9
9
  所有插件的 kind 都是 `check`,清单(`sumi-plugins.yaml`)中都没有声明 `triggers`。除 `core/coverage` 外也都没有声明 `minTier`。
10
10
 
11
- | id | 作用 | kind | 档位 | `with` 配置项 | 指标 | needs | fix |
12
- | --------------------- | -------------------------------------------------------------------------- | ----- | ------------------ | ---------------------------------------------------- | ---------------------------------------- | ------------------------------ | ------------------ |
13
- | `core/format` | `prettier --list-different` 只读检查 | check | — | `binDir` | — | bin: prettier | `prettier --write` |
14
- | `core/lint` | ESLint(项目配置);error 为 finding,warning 计入指标 | check | — | `binDir` | `warnings`(lower-is-better) | bin: eslint | `eslint --fix` |
15
- | `core/typecheck` | 对各工程运行 `tsc --noEmit`,始终全量 | check | — | `binDir`、`projects`(默认 `[tsconfig.json]`) | — | bin: tsc;files: tsconfig.json | — |
16
- | `core/test-affected` | 改动范围用 `vitest related`,全量用 `vitest run`;为注入的测试义务逐项回执 | check | — | `binDir` | — | bin: vitest | — |
17
- | `core/coverage` | 全量运行测试,上报行覆盖率 | check | `minTier: runtime` | `binDir`、`include`、`exclude`、`tool`、`subprocess` | `coverage`(higher-is-better,容差 0.1) | bin: vitest | — |
18
- | `core/layer-boundary` | 每个文件归属某个区域或中立区;business 不得导入 control/precedent | check | — | — | — | — | — |
19
- | `core/control-docs` | 入口文档限长;规范性语句必须引用存在的执行者 | check | — | `maxLines`、`keywords`、`paths`、`exclude` | `exemptions`(lower-is-better) | — | — |
20
- | `core/exec` | 运行已有命令,按退出码与输出给出结果 | check | — | `argv`、`passFiles`、`pattern` | — | — | — |
21
- | `core/agent-drift` | 调用 `sumi update --check --json`,报告 AI 工具适配与 hook 的漂移 | check | — | — | — | — | — |
22
- | `core/ratchet` | 本次运行的指标与基线比较,不得变差 | check | — | `budgets` | — | — | — |
11
+ | id | 作用 | kind | 档位 | `with` 配置项 | 指标 | needs | fix |
12
+ | --------------------- | -------------------------------------------------------------------------------------------------------------------- | ----- | ------------------ | ------------------------------------------------------- | ---------------------------------------- | ------------------------------ | ------------------ |
13
+ | `core/format` | `prettier --list-different` 只读检查 | check | — | `binDir` | — | bin: prettier | `prettier --write` |
14
+ | `core/lint` | ESLint(项目配置);error 为 finding,warning 计入指标 | check | — | `binDir` | `warnings`(lower-is-better) | bin: eslint | `eslint --fix` |
15
+ | `core/typecheck` | 对各工程运行 `tsc --noEmit`,始终全量 | check | — | `binDir`、`projects`(默认 `[tsconfig.json]`) | — | bin: tsc;files: tsconfig.json | — |
16
+ | `core/test-affected` | 经 vitest Node API 只运行与改动相关的测试,追不到的改动全部运行;可按 workspace 包逐包选择;为注入的测试义务逐项回执 | check | — | `ignore`、`workspaces`、`wholePackages`、`sourceGuards` | — | bin: vitest | — |
17
+ | `core/coverage` | 全量运行测试,上报行覆盖率 | check | `minTier: runtime` | `binDir`、`include`、`exclude`、`tool`、`subprocess` | `coverage`(higher-is-better,容差 0.1) | bin: vitest | — |
18
+ | `core/layer-boundary` | 每个文件归属某个区域或中立区;business 不得导入 control/precedent | check | — | — | — | — | — |
19
+ | `core/control-docs` | 入口文档限长;规范性语句必须引用存在的执行者 | check | — | `maxLines`、`keywords`、`paths`、`exclude` | `exemptions`(lower-is-better) | — | — |
20
+ | `core/exec` | 运行已有命令,按退出码与输出给出结果 | check | — | `argv`、`passFiles`、`pattern` | — | — | — |
21
+ | `core/agent-drift` | 调用 `sumi update --check --json`,报告 AI 工具适配与 hook 的漂移 | check | — | — | — | — | — |
22
+ | `core/ratchet` | 本次运行的指标与基线比较,不得变差 | check | — | `budgets` | — | — | — |
23
23
 
24
24
  修复命令由 `sumi fix <step-id>` 执行,参数是该步骤检查过的文件;没有文件时处理整个仓库(`.`)。
25
25
 
26
26
  ### 各插件细节
27
27
 
28
28
  - **core/format、core/lint**:只检查内核给出的文件列表(全量时为全仓减去排除路径),不让工具自己扫描。lint 只看 JS/TS 扩展名的文件;eslint 9 及以上加 `--no-warn-ignored`。改动范围运行时,lint 用 `git show <base>:<文件>` 取出基准版本,按"规则 + 消息"统计告警的**新增量**(`added`)。全量运行时只上报绝对值。
29
- - **长文件列表**:core/format、core/lint 及其修复命令会按保守的跨平台命令长度预算分批调用项目工具。lint 合并每批 JSON 报告,format 合并每批不合规文件;任何一批无法启动、输出不可解析或单个参数超限时,整体不会报告成功。`core/exec passFiles` 包装的是任意项目命令,Sumi 无法推断它能否安全重复执行及如何合并输出,因此不会自动分批:Windows 上命令行超出 CreateProcess 上限,或超出 cmd.exe 上限且命令非零退出时,步骤为 `blocked` 并说明原因,需要处理超长列表时,由该命令通过 `SUMI_BASE` 自行计算范围或使用项目工具支持的响应文件机制。core/test-affected 与 `sumi fix` 运行的是同一个测试工具或修复命令,按同一预算分批,合并各批结果。
29
+ - **长文件列表**:core/format、core/lint 及其修复命令会按保守的跨平台命令长度预算分批调用项目工具。lint 合并每批 JSON 报告,format 合并每批不合规文件;任何一批无法启动、输出不可解析或单个参数超限时,整体不会报告成功。`core/exec passFiles` 包装的是任意项目命令,Sumi 无法推断它能否安全重复执行及如何合并输出,因此不会自动分批:Windows 上命令行超出 CreateProcess 上限,或超出 cmd.exe 上限且命令非零退出时,步骤为 `blocked` 并说明原因,需要处理超长列表时,由该命令通过 `SUMI_BASE` 自行计算范围或使用项目工具支持的响应文件机制。`sumi fix` 运行的修复命令按同一预算分批。core/test-affected 不经命令行传文件,见下文。
30
30
  - **core/typecheck**:解析 `文件(行,列): error TSxxxx: 消息` 形式的输出。tsc 退出码非 0 但没有解析出错误时,结论为 `blocked`。
31
- - **core/test-affected**:规划器注入的具名测试义务(`target.file`、`target.name`)按实际执行结果回执,取值为 `passed`、`failed`、`skipped`、`not-executed` 之一。被跳过、待办或未执行都不算 passed。
31
+ - **core/test-affected**:选择范围见下文。规划器注入的具名测试义务(`target.file`、`target.name`)按实际执行结果回执,取值为 `passed`、`failed`、`skipped`、`not-executed` 之一。被跳过、待办或未执行都不算 passed。只有经运行器执行的测试才有逐条结果;以 `<包管理器> run test` 运行的包(workspace 模式下 `test` 脚本不是 `vitest run`)没有逐条结果,目标在这些包中的义务回执为 `not-executed`。
32
32
  - **core/coverage**:默认用 vitest 的 v8 覆盖率(需要项目安装 `@vitest/coverage-v8`,否则结论为 `skipped`)。`tool: c8` 时还会用 `NODE_V8_COVERAGE` 收集子进程中执行的代码:`subprocess` 指定要统计的构建产物 glob,经 c8 映射回源码后,与测试进程内的覆盖按行取并集。`include` / `exclude` 限定统计范围。
33
33
  - **core/layer-boundary**:从项目配置读取 `zones`、`neutral`,检查三类问题:未归属任何区域的文件(`unowned-file`);business 区用相对路径导入 control 区或 precedent 区的模块(`business-imports-control`);control 区或 precedent 区中被 `.gitignore` 忽略的文件(`ignored-control-file`,`node_modules` 除外)。
34
34
  - **core/control-docs**:默认扫描 `AGENTS.md` 与 `control/**/*.md`,`AGENTS.md` 的上限默认为 100 行。默认关键词为 `MUST`、`SHALL`、`必须`、`禁止`、`不得`。代码块、引用行和空行不扫描。带 `[non-normative]` 的行不扫描,并计入豁免指标;被 `with.exclude` 排除的文件数也计入豁免指标。插件认四类执行者引用:`[plugin:<id>]`(本次运行加载的插件)、`[step:<id>]`(`control/flows/*.flow.yaml` 中的步骤 id)、`[prec:<id>]`(`precedents/registry.yaml`)、`[rubric:<集合>#<条目>]`(`control/rubrics/<集合>.yaml`)。规范性语句没有引用时报 `no-enforcer`,引用的目标不存在时报 `broken-reference`。这项检查只证明规则声明了执行者,不证明执行者在语义上正确。
35
35
 
36
+ ## core/test-affected:受影响的测试
37
+
38
+ 插件以子进程(当前 Node)在项目目录启动包内的运行器 `dist/vitest-runner.js`,运行器从项目解析 `vitest/node`,用 Node API 求出相关测试后运行,等同 `vitest related --run`(全部运行时等同 `vitest run`),并与 vitest CLI 一样设置 `NODE_ENV`(未设置时为 `test`)、`TEST=true`、`VITEST=true`。改动文件、报告与选中数都经证据目录中的文件传递(第一次运行为 `vitest.input.json`、`vitest.json`、`vitest.result.json`,之后的运行加序号 `vitest-<n>.*`,日志为 `vitest.log`),不经命令行,不受 Windows 命令行长度限制,也不会把同一个测试运行多次。
39
+
40
+ 运行器要求项目的 vitest 不低于 3.0(`getRelevantTestSpecifications` 自 3.0 起提供);缺少 `createVitest` 或 `getRelevantTestSpecifications` 时结论为 `blocked`,summary 提示所需版本。单仓模式下从仓库根解析不到 vitest 时结论为 `skipped`;workspace 模式不会因此 `skipped`,解析不到 vitest 的包改为以包管理器运行 `test` 脚本。运行器异常退出(退出码不是 0、1 或回退用的 3)或没有产出报告时结论为 `blocked`。
41
+
42
+ vitest related 只沿 import 图追踪。以下改动它追不到或不会整体重跑,插件改为全部运行,并在 summary 中写明原因:
43
+
44
+ - 配置文件:`package.json`、`tsconfig*.json`、`vite.config.*`、`vitest.config.*`(含带后缀的变体)、`vitest.workspace.*`、`vitest.projects.*`;运行器还会读出 vitest(及各 project)实际使用的配置文件及其导入的文件(vite 的 `configFileDependencies`)、`setupFiles` 与 `globalSetup` 及它们导入的本地文件,改动命中时同样全部运行。Windows 上这些路径按大小写不敏感比较。
45
+ - 删除的文件:内核的文件列表只含存在的文件,插件用 `git diff --diff-filter=D` 相对基准自行计算。
46
+ - 非 JS/TS 文件(`?raw`、fs 读取的数据文件等)。被 `with.ignore` 匹配的文件不计入,默认 `['**/*.md']`:测试以 fs 或 `?raw` 读取 `.md` fixture 时,这些 fixture 的改动不会触发任何测试,应配置 `ignore` 只忽略文档(如 `['*.md', 'docs/**']`),不匹配 fixture。
47
+
48
+ 运行器无法求出相关测试(例如某个测试文件无法解析)时回退为全部运行。测试失败生成 `test-failed` finding;测试文件本身加载失败时按文件报告。
49
+
50
+ | 配置项 | 作用 |
51
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
52
+ | `ignore` | 不影响测试的文件 glob(相对仓库根),默认 `['**/*.md']`;给出时替换默认值 |
53
+ | `workspaces` | 为 `true` 时按 workspace 包逐包选择(见下);默认关闭,不自动检测 |
54
+ | `wholePackages` | workspace 模式:只要成为候选就整包运行的包,包名列表,或 `{ 包名: 原因 }`(原因写入 summary) |
55
+ | `sourceGuards` | workspace 模式:`{ 包名: [相对包目录的测试路径] }`,本包有源码改动时追加到 related 输入,用于以 fs 或 `?raw` 读取源码做断言、import 图追不到的守卫测试 |
56
+
57
+ ### workspace 模式
58
+
59
+ 包从 `pnpm-workspace.yaml` 的 `packages` 读出,没有该文件时读 `package.json` 的 `workspaces`(数组或 `packages` 字段)。只支持 `dir` 与 `dir/*` 两种写法;含 `**`、`!` 等其他写法,或一个包也没有匹配到(如 `pnpm-workspace.yaml` 没有 `packages`)时,回退为在仓库根整体运行根 `test` 脚本(根 `package.json` 不存在或没有 `test` 脚本时为 `blocked`)。包之间的依赖取各包 `package.json` 中 `dependencies`、`devDependencies`、`peerDependencies`、`optionalDependencies` 里的 workspace 包名。
60
+
61
+ 1. 改动按路径归属到包(嵌套时取最深的包)。有相关改动不属于任何包(如根配置、锁文件、根目录下的源码与测试)时,每个有 `test` 脚本的包整包运行,根 `package.json` 有 `test` 脚本时也整体运行一次根 `test` 脚本(全量运行时同样如此);根没有 `test` 脚本时 summary 注明包外改动未运行根测试。框架不分析锁文件,需要更细的归属由项目插件完成。
62
+ 2. 候选包为有改动的包及其传递下游(广度遍历,环依赖安全)。
63
+ 3. 每个候选包依次判定:没有 `test` 脚本 → 跳过;`test` 脚本不是 `vitest run` → 整包;在 `wholePackages` 中 → 整包;本包有配置、删除或非 JS/TS 改动 → 整包;上游有此类改动 → 整包;否则在包目录运行 related,输入为本包与上游改动文件的绝对路径,本包有源码改动时追加 `sourceGuards`。仅作为下游且 related 没有选中测试时记为跳过。
64
+ 4. 整包运行:`test` 脚本是 `vitest run` 时由运行器在包目录全部运行(保留逐条测试结果);否则以项目包管理器(`packageManager` 字段,其次按锁文件判断,默认 npm)在包目录运行 `<包管理器> run test`,失败时生成一条定位到该包 `package.json` 的 finding。
65
+ 5. 仓库根的测试(根 `package.json` 有 `test` 脚本、只有包内改动时):根 `test` 脚本是 `vitest run` 时,在仓库根以全部包内改动文件运行一次 related,覆盖“根 vitest 配置用 `projects`/`include` 扫描子包、子包不写 `test` 脚本”的写法与引用包源码的根级测试(如 `tests/*.test.ts`);包内改动含配置、删除或非 JS/TS 文件时改为整体运行根 `test` 脚本;根 related 没有选中测试不算失败。根 `test` 脚本不是 `vitest run`(带参数、多份配置、`pnpm -r test` 等)时无法按文件选择,整体运行根 `test` 脚本。根测试按其本身语义运行:它若也覆盖子包(如 `pnpm -r test`,或根 vitest 配置扫描子包测试),这些测试会与子包的运行重复,宁可多跑。
66
+
67
+ 各包的模式与原因写入 summary 与证据 `modes.json`,所有包的结果汇总为一个步骤结果,具名测试义务按全部报告回执。
68
+
69
+ related 只沿源码的 import 图追踪。下游经 `main`、`exports` 指向的构建产物(如 `dist/`)消费上游时,上游源码改动追不到下游的测试,应把这类下游列入 `wholePackages`。
70
+
71
+ ```yaml
72
+ - use: core/test-affected
73
+ with:
74
+ workspaces: true
75
+ wholePackages: { '@app/cli': globalSetup 先构建产物 }
76
+ sourceGuards: { '@app/sdk': [test/source-guards.test.ts] }
77
+ ```
78
+
36
79
  ## core/exec:包装已有脚本
37
80
 
38
81
  `core/exec` 运行 `with.argv` 给出的命令,工作目录为仓库根。退出码为 0 时结论为 `pass`,非 0 为 `fail`,命令无法启动时为 `blocked`。完整输出写入证据 `output.log`。
@@ -1,59 +1,253 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { definePlugin, result, splitFileArguments, writeEvidence } from '@sumi/plugin-sdk';
4
- import { findTool, runTool, toRepoPath } from '../lib.js';
1
+ import { spawnSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, realpathSync } from 'node:fs';
3
+ import { createRequire } from 'node:module';
4
+ import { dirname, join } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { definePlugin, gitPaths, result, spawnCommandSync, writeEvidence, } from '@sumi/plugin-sdk';
7
+ import { toRepoPath } from '../lib.js';
8
+ import { classifyChanges, DEFAULT_IGNORE, decideTestModes, owningPackage, packageManager, readWorkspace, rootTestScript, wholeRunReason, } from '../test-scope.js';
9
+ const RUNNER = fileURLToPath(new URL('../vitest-runner.js', import.meta.url));
10
+ const FALLBACK_EXIT = 3;
11
+ const INCOMPATIBLE_EXIT = 4;
5
12
  /**
6
- * 受影响测试:vitest related 运行与改动相关的测试(含规划器注入的测试文件)。
13
+ * 从目录向上查找项目安装的 vitest(vitest/node 入口);找不到时返回 null。
14
+ * 只认项目的 node_modules:Node 解析会读取 NODE_PATH(包管理器的命令垫片会设置它),可能解析到 Sumi 自己依赖里的 vitest。
15
+ */
16
+ function resolveVitest(dir) {
17
+ for (let at = dir;; at = dirname(at)) {
18
+ const manifest = join(at, 'node_modules', 'vitest', 'package.json');
19
+ if (existsSync(manifest)) {
20
+ try {
21
+ return createRequire(manifest).resolve('vitest/node');
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ if (dirname(at) === at)
28
+ return null;
29
+ }
30
+ }
31
+ /**
32
+ * 受影响测试:用 vitest Node API 运行与改动相关的测试(含规划器注入的测试文件),vitest related 追不到的改动改为全部运行;
33
+ * with.workspaces 为 true 时按 workspace 包逐包判定 related、整包或跳过。
7
34
  * 被注入的具名测试义务逐项回执:跳过、待办、未执行都不算 passed。
8
35
  */
9
36
  await definePlugin((ctx) => {
10
- const vitest = findTool(ctx, 'vitest');
11
- if (!vitest)
37
+ const ignore = Array.isArray(ctx.config.ignore) ? ctx.config.ignore : DEFAULT_IGNORE;
38
+ const deleted = !ctx.all && ctx.base ? gitPaths(ctx.repoRoot, ['diff', '--name-only', '--diff-filter=D', '--no-renames', ctx.base]) : [];
39
+ const changes = classifyChanges([...ctx.files.map((path) => ({ path, deleted: false })), ...deleted.map((path) => ({ path, deleted: true }))], ignore);
40
+ const workspace = ctx.config.workspaces === true;
41
+ const vitest = resolveVitest(ctx.repoRoot);
42
+ if (!workspace && !vitest)
12
43
  return result({ status: 'skipped', summary: '未找到 vitest,请在项目中安装' });
13
- if (!ctx.all && ctx.files.length === 0) {
44
+ if (!ctx.all && changes.length === 0)
14
45
  return result({ status: 'pass', summary: '没有受影响的测试', checked: [] });
46
+ const logs = [];
47
+ const evidence = [];
48
+ let seq = 0;
49
+ /** 在 cwd 运行 vitest:files 为 null 时全部运行。related 求图失败时回退全部运行。 */
50
+ const runVitest = (label, cwd, entry, files) => {
51
+ const once = (list) => {
52
+ const tag = seq === 0 ? `vitest` : `vitest-${seq}`;
53
+ seq++;
54
+ const input = join(ctx.evidenceDir, `${tag}.input.json`);
55
+ const report = join(ctx.evidenceDir, `${tag}.json`);
56
+ const resultFile = join(ctx.evidenceDir, `${tag}.result.json`);
57
+ writeEvidence(ctx, `${tag}.input.json`, JSON.stringify({ vitest: entry, files: list, report, result: resultFile }));
58
+ const r = spawnSync(process.execPath, [RUNNER, input], { cwd, encoding: 'utf8', maxBuffer: 64 * 1024 * 1024, windowsHide: true });
59
+ logs.push(`## ${label}${list ? '(related)' : '(全部)'}\n${r.stdout ?? ''}${r.stderr ?? ''}${r.error ? `\n无法启动:${r.error.message}` : ''}`);
60
+ const info = existsSync(resultFile)
61
+ ? JSON.parse(readFileSync(resultFile, 'utf8'))
62
+ : undefined;
63
+ if (existsSync(report))
64
+ evidence.push(report);
65
+ return {
66
+ status: r.status,
67
+ info,
68
+ report: existsSync(report) ? JSON.parse(readFileSync(report, 'utf8')) : undefined,
69
+ };
70
+ };
71
+ let r = once(files);
72
+ let fallback = '';
73
+ if (files && r.status === FALLBACK_EXIT) {
74
+ fallback = 'related 无法运行,回退全部运行;';
75
+ r = once(null);
76
+ }
77
+ const note = `${fallback}${r.info?.whole ? `${r.info.whole},全部运行;` : ''}选中 ${r.info?.selected ?? '?'} 个测试文件`;
78
+ if (r.status === INCOMPATIBLE_EXIT)
79
+ return { label, note, blocked: r.info?.incompatible ?? '项目的 vitest 缺少所需 API,需要 vitest >= 3.0' };
80
+ if (r.status === FALLBACK_EXIT)
81
+ return { label, note, blocked: 'vitest 无法启动' };
82
+ if (!r.report)
83
+ return { label, note, blocked: 'vitest 未产出报告' };
84
+ if (r.status !== 0 && r.status !== 1)
85
+ return { label, note, report: r.report, blocked: `vitest 退出码 ${r.status}` };
86
+ if (r.status === 1 && r.report.numFailedTests === 0)
87
+ return { label, note, report: r.report, blocked: 'vitest 失败但没有失败的测试,见日志' };
88
+ return { label, note, report: r.report, selected: r.info?.selected };
89
+ };
90
+ /** 以项目包管理器运行目录下的 test 脚本(测试命令不是单纯 vitest run 时)。 */
91
+ const runScript = (label, cwd, manifest) => {
92
+ const pm = packageManager(ctx.repoRoot);
93
+ const r = spawnCommandSync(pm, ['run', 'test'], { cwd, encoding: 'utf8', maxBuffer: 64 * 1024 * 1024, windowsHide: true });
94
+ logs.push(`## ${label}(${pm} run test)\n${r.stdout ?? ''}${r.stderr ?? ''}${r.error ? `\n无法启动:${r.error.message}` : ''}`);
95
+ if (r.error)
96
+ return { label, note: `${pm} run test`, blocked: `无法启动 ${pm}:${r.error.message}` };
97
+ return { label, note: `${pm} run test`, scriptFailure: r.status === 0 ? undefined : { file: manifest, status: r.status } };
98
+ };
99
+ const outcomes = [];
100
+ const lines = [];
101
+ if (!workspace) {
102
+ const reason = ctx.all ? '全量运行' : wholeRunReason(changes);
103
+ const realRoot = realpathSync(ctx.repoRoot);
104
+ const related = changes.filter((c) => c.kind === 'code').map((c) => join(realRoot, c.path));
105
+ if (!reason && related.length === 0)
106
+ return result({ status: 'pass', summary: '没有受影响的测试', checked: ctx.files });
107
+ const run = runVitest('项目', realRoot, vitest, reason ? null : related);
108
+ outcomes.push(run);
109
+ lines.push(reason ? `全部运行(${reason},${run.note})` : `related(输入 ${related.length} 个文件,${run.note})`);
15
110
  }
16
- // 改动文件按命令行安全预算分批(Windows 的 .cmd 经命令解释器,长度上限约 8K),每批单独写报告后合并。
17
- const outputOf = (i) => join(ctx.evidenceDir, i === 0 ? 'vitest.json' : `vitest-${i}.json`);
18
- const fixed = (i) => ctx.all
19
- ? ['run', '--reporter=json', `--outputFile=${outputOf(i)}`, '--passWithNoTests']
20
- : ['related', '--run', '--reporter=json', `--outputFile=${outputOf(i)}`, '--passWithNoTests'];
21
- let batches;
22
- try {
23
- batches = ctx.all ? [[]] : splitFileArguments(vitest, fixed(9999), ctx.files);
111
+ else {
112
+ runWorkspace(ctx, changes, { runVitest, runScript, outcomes, lines });
24
113
  }
25
- catch (error) {
26
- return result({ status: 'blocked', summary: `无法运行 vitest:${error.message}` });
114
+ evidence.unshift(writeEvidence(ctx, 'vitest.log', logs.join('\n')));
115
+ return summarize(ctx, outcomes, lines, evidence);
116
+ });
117
+ /** workspace 模式:改动归属到包,按依赖求下游,逐包判定并运行;最后按 runRoot 运行仓库根自己的测试。 */
118
+ function runWorkspace(ctx, changes, runners) {
119
+ const { outcomes, lines } = runners;
120
+ const rootTest = rootTestScript(ctx.repoRoot);
121
+ const ws = readWorkspace(ctx.repoRoot);
122
+ if ('error' in ws) {
123
+ lines.push(`全部运行(${ws.error})`);
124
+ outcomes.push(rootTest
125
+ ? runWhole(ctx.repoRoot, '仓库根', rootTest, 'package.json', runners)
126
+ : { label: '仓库根', note: '', blocked: rootTest === null ? '根 package.json 不存在' : '根 package.json 没有 test 脚本' });
127
+ return;
27
128
  }
28
- const runs = batches.map((batch, i) => runTool(ctx, vitest, [...fixed(i), ...batch]));
29
- const evidence = [writeEvidence(ctx, 'vitest.log', runs.map((r) => r.stdout + r.stderr).join(''))];
30
- const outputs = batches.map((_, i) => outputOf(i));
31
- if (!outputs.every((o) => existsSync(o)))
32
- return result({ status: 'blocked', summary: 'vitest 未产出报告', evidence });
33
- evidence.push(...outputs);
34
- const reports = outputs.map((o) => JSON.parse(readFileSync(o, 'utf8')));
35
- // 不同批次可能关联到同一个测试文件,同名结果只保留一份,总数按去重后的结果计算
36
- const testResults = [...new Map(reports.flatMap((x) => x.testResults).map((t) => [t.name, t])).values()];
37
- const assertions = testResults.flatMap((t) => t.assertionResults);
38
- const report = {
39
- numTotalTests: batches.length === 1 ? reports[0].numTotalTests : assertions.length,
40
- numFailedTests: batches.length === 1 ? reports[0].numFailedTests : assertions.filter((a) => a.status === 'failed').length,
41
- testResults,
129
+ const { packages } = ws;
130
+ const byPackage = new Map();
131
+ let outside;
132
+ for (const change of changes) {
133
+ if (change.kind === 'ignored')
134
+ continue;
135
+ const pkg = owningPackage(packages, change.path);
136
+ if (!pkg) {
137
+ outside ??= change.path;
138
+ continue;
139
+ }
140
+ const rel = change.path.slice(pkg.rel.length + 1);
141
+ byPackage.set(pkg.name, [...(byPackage.get(pkg.name) ?? []), { ...change, rel, abs: join(pkg.dir, rel) }]);
142
+ }
143
+ const wholeAll = ctx.all ? '全量运行' : outside ? `改动 ${outside} 不属于任何包` : undefined;
144
+ const decisions = decideTestModes(packages, byPackage, {
145
+ wholePackages: wholePackages(ctx.config.wholePackages),
146
+ sourceGuards: ctx.config.sourceGuards ?? {},
147
+ wholeAll,
148
+ });
149
+ writeEvidence(ctx, 'modes.json', JSON.stringify(decisions, null, 2));
150
+ const byName = new Map(packages.map((p) => [p.name, p]));
151
+ for (const d of decisions)
152
+ lines.push(runPackage(byName.get(d.name), d, runners));
153
+ const line = runRoot(ctx.repoRoot, rootTest, wholeAll, outside, byPackage, runners);
154
+ if (line)
155
+ lines.push(line);
156
+ }
157
+ /**
158
+ * 仓库根自己的测试(宁可多跑:根配置若也扫描子包测试,这些测试会再运行一次)。
159
+ * 包外改动或全量运行:整体运行根 test 脚本。只有包内改动时:根 test 是 vitest run 则在根上以全部包内改动运行一次 related
160
+ * (有配置、删除或非 JS/TS 改动时整体运行);根 test 不是单纯 vitest run(带参数、多份配置、pnpm -r 等)时无法按文件选择,整体运行。
161
+ */
162
+ function runRoot(root, rootTest, wholeAll, outside, byPackage, runners) {
163
+ const changes = [...byPackage.values()].flat();
164
+ if (!rootTest)
165
+ return outside ? '仓库根:根没有 test 脚本,包外改动未运行根测试' : undefined;
166
+ const whole = (reason) => {
167
+ runners.outcomes.push(runWhole(root, '仓库根', rootTest, 'package.json', runners));
168
+ return `仓库根:整包(${reason})`;
42
169
  };
43
- const r = { status: runs.find((run) => run.status !== 0)?.status ?? 0 };
170
+ if (wholeAll)
171
+ return whole(wholeAll);
172
+ if (changes.length === 0)
173
+ return undefined;
174
+ const entry = resolveVitest(root);
175
+ if (rootTest.trim() === 'vitest run' && entry) {
176
+ const reason = wholeRunReason(changes);
177
+ if (reason)
178
+ return whole(reason);
179
+ const files = changes.map((c) => c.abs);
180
+ const run = runners.runVitest('仓库根', realpathSync(root), entry, files);
181
+ runners.outcomes.push(run);
182
+ return `仓库根:related(输入 ${files.length} 个包内改动文件,${run.note})`;
183
+ }
184
+ return whole(rootTest.trim() === 'vitest run' ? '未找到 vitest' : 'test 脚本不是 vitest run');
185
+ }
186
+ /** 整包运行:test 脚本是 vitest run 时由运行器全部运行(保留逐条结果),否则以包管理器运行 test 脚本。 */
187
+ function runWhole(dir, label, test, manifest, { runVitest, runScript }) {
188
+ const entry = resolveVitest(dir);
189
+ return entry && test?.trim() === 'vitest run' ? runVitest(label, dir, entry, null) : runScript(label, dir, manifest);
190
+ }
191
+ function runPackage(pkg, d, runners) {
192
+ if (d.mode === 'skip')
193
+ return `${d.name}:跳过(${d.reason})`;
194
+ const entry = resolveVitest(pkg.dir);
195
+ if (d.mode === 'related' && entry) {
196
+ const run = runners.runVitest(d.name, pkg.dir, entry, d.files);
197
+ if (run.selected === 0 && !d.own)
198
+ return `${d.name}:跳过(related 没有选中测试)`;
199
+ runners.outcomes.push(run);
200
+ return `${d.name}:related(${d.reason},${run.note})`;
201
+ }
202
+ runners.outcomes.push(runWhole(pkg.dir, d.name, pkg.test, `${pkg.rel}/package.json`, runners));
203
+ return `${d.name}:整包(${d.mode === 'related' ? '未找到 vitest' : d.reason})`;
204
+ }
205
+ /** with.wholePackages:包名列表,或包名 → 原因。 */
206
+ function wholePackages(value) {
207
+ if (Array.isArray(value))
208
+ return new Map(value.map((name) => [String(name), '']));
209
+ if (value && typeof value === 'object')
210
+ return new Map(Object.entries(value).map(([k, v]) => [k, String(v ?? '')]));
211
+ return new Map();
212
+ }
213
+ function summarize(ctx, outcomes, lines, evidence) {
44
214
  const findings = [];
45
215
  const executed = new Map();
46
- for (const file of report.testResults) {
47
- const rel = toRepoPath(ctx.repoRoot, file.name);
48
- executed.set(rel, file.assertionResults);
49
- for (const a of file.assertionResults.filter((x) => x.status === 'failed')) {
216
+ let total = 0;
217
+ for (const outcome of outcomes) {
218
+ for (const file of outcome.report?.testResults ?? []) {
219
+ const rel = toRepoPath(ctx.repoRoot, file.name);
220
+ executed.set(rel, [...(executed.get(rel) ?? []), ...file.assertionResults]);
221
+ total += file.assertionResults.length;
222
+ for (const a of file.assertionResults.filter((x) => x.status === 'failed')) {
223
+ findings.push({
224
+ id: `F${findings.length + 1}`,
225
+ rule: 'test-failed',
226
+ severity: 'error',
227
+ message: `${a.fullName}:${(a.failureMessages?.[0] ?? '').split('\n')[0]}`,
228
+ file: rel,
229
+ subject: a.fullName,
230
+ });
231
+ }
232
+ // 测试文件本身加载失败(语法错误、导入失败)时没有失败的断言,按文件报告
233
+ if (file.status === 'failed' && !file.assertionResults.some((x) => x.status === 'failed')) {
234
+ findings.push({
235
+ id: `F${findings.length + 1}`,
236
+ rule: 'test-failed',
237
+ severity: 'error',
238
+ message: `测试文件失败:${(file.message ?? '').split('\n')[0]}`,
239
+ file: rel,
240
+ });
241
+ }
242
+ }
243
+ if (outcome.scriptFailure) {
50
244
  findings.push({
51
245
  id: `F${findings.length + 1}`,
52
246
  rule: 'test-failed',
53
247
  severity: 'error',
54
- message: `${a.fullName}:${(a.failureMessages?.[0] ?? '').split('\n')[0]}`,
55
- file: rel,
56
- subject: a.fullName,
248
+ message: `${outcome.label} 的 test 脚本失败(退出码 ${outcome.scriptFailure.status}),见 vitest.log`,
249
+ file: outcome.scriptFailure.file,
250
+ subject: outcome.label,
57
251
  });
58
252
  }
59
253
  }
@@ -69,14 +263,21 @@ await definePlugin((ctx) => {
69
263
  return { id: o.id, outcome: 'failed' };
70
264
  return { id: o.id, outcome: 'skipped', detail: `测试状态为 ${match.status}` };
71
265
  });
72
- const failed = findings.length > 0 || (r.status !== 0 && report.numFailedTests > 0);
266
+ const blocked = outcomes.filter((o) => o.blocked).map((o) => `${o.label}:${o.blocked}`);
267
+ const verdict = findings.length > 0
268
+ ? `${findings.length} 个测试失败`
269
+ : blocked.length > 0
270
+ ? blocked.join(';')
271
+ : outcomes.length === 0
272
+ ? '没有需要运行的测试'
273
+ : `测试通过(${total} 个)`;
73
274
  return result({
74
- status: failed ? 'fail' : r.status !== 0 ? 'blocked' : 'pass',
75
- summary: failed ? `${findings.length} 个测试失败` : `测试通过(${report.numTotalTests} 个)`,
275
+ status: findings.length > 0 ? 'fail' : blocked.length > 0 ? 'blocked' : 'pass',
276
+ summary: [...lines, verdict].join(';'),
76
277
  findings,
77
278
  checked: ctx.all ? 'all' : ctx.files,
78
279
  evidence,
79
280
  obligations: receipts,
80
281
  });
81
- });
282
+ }
82
283
  //# sourceMappingURL=test-affected.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-affected.js","sourceRoot":"","sources":["../../src/plugins/test-affected.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-affected.js","sourceRoot":"","sources":["../../src/plugins/test-affected.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * 受影响测试的范围判定(纯逻辑,供 core/test-affected 使用)。
3
+ *
4
+ * vitest related 只沿 import 图追踪,以下改动它追不到或不会整体重跑,因此按“全部运行”处理:
5
+ * 配置文件(package.json、tsconfig、vite(st) 配置、vitest workspace/projects 文件)、删除的文件(已不在 import 图中)、
6
+ * 非 JS/TS 文件(`?raw`、fs 读取的数据文件;按文件名找引用者会被同名文件误导)。被 ignore 匹配的文件(默认 .md)不计入。
7
+ */
8
+ export type FileKind = 'config' | 'code' | 'data' | 'ignored';
9
+ export interface Change {
10
+ /** 相对仓库根的路径(/ 分隔)。 */
11
+ path: string;
12
+ deleted: boolean;
13
+ }
14
+ export interface ClassifiedChange extends Change {
15
+ kind: FileKind;
16
+ }
17
+ export declare const DEFAULT_IGNORE: string[];
18
+ /** 按类别归类改动;删除的文件归为 config(同样需要全部运行)。 */
19
+ export declare function classifyChanges(changes: Change[], ignore?: string[]): ClassifiedChange[];
20
+ /** 需要全部运行的原因(第一个不是 JS/TS 源码的相关改动);没有时返回 null。 */
21
+ export declare function wholeRunReason(changes: ClassifiedChange[]): string | null;
22
+ export interface WorkspacePackage {
23
+ name: string;
24
+ /** 相对仓库根的包目录(/ 分隔)。 */
25
+ rel: string;
26
+ /** 包目录的绝对路径(真实路径)。 */
27
+ dir: string;
28
+ test?: string;
29
+ /** workspace 内部依赖的包名。 */
30
+ deps: string[];
31
+ }
32
+ export type WorkspaceRead = {
33
+ packages: WorkspacePackage[];
34
+ } | {
35
+ error: string;
36
+ };
37
+ /**
38
+ * 读出 workspace 包。只支持 `dir` 与 `dir/*` 两种写法;遇到 `**`、`!` 等其他写法,或一个包也没有匹配到时返回 error,
39
+ * 由调用方回退为运行仓库根的 test 脚本(不能因为包列表为空而通过)。
40
+ */
41
+ export declare function readWorkspace(root: string): WorkspaceRead;
42
+ /** 文件所属的包(包目录嵌套时取最深的一个)。 */
43
+ export declare function owningPackage(packages: WorkspacePackage[], path: string): WorkspacePackage | undefined;
44
+ export interface PackageChange extends ClassifiedChange {
45
+ /** 相对包目录的路径。 */
46
+ rel: string;
47
+ /** 绝对路径(真实路径)。 */
48
+ abs: string;
49
+ }
50
+ export interface Decision {
51
+ name: string;
52
+ mode: 'related' | 'whole' | 'skip';
53
+ reason: string;
54
+ /** related 的输入文件(绝对路径)。 */
55
+ files?: string[];
56
+ /** 本包自身有相关改动(related 选中 0 个时据此区分“没有相关测试”与“跳过”)。 */
57
+ own?: boolean;
58
+ }
59
+ export interface DecideOptions {
60
+ /** 只要成为候选就整包运行的包:包名 → 原因。 */
61
+ wholePackages?: Map<string, string>;
62
+ /** 本包有源码改动时追加到 related 输入的守卫测试:包名 → 相对包目录的路径。 */
63
+ sourceGuards?: Record<string, string[]>;
64
+ /** 全部运行的原因:给出时每个有 test 脚本的包都整包。 */
65
+ wholeAll?: string;
66
+ }
67
+ /**
68
+ * 逐包判定模式:候选包为有改动的包及其下游。
69
+ * changes:包名 → 该包的改动(不含 ignored)。
70
+ */
71
+ export declare function decideTestModes(packages: WorkspacePackage[], changes: Map<string, PackageChange[]>, opts?: DecideOptions): Decision[];
72
+ /** 仓库根 package.json 的 test 脚本;没有 package.json 时返回 null。 */
73
+ export declare function rootTestScript(root: string): string | undefined | null;
74
+ /** 比较路径用的键:绝对路径、/ 分隔;Windows 文件系统大小写不敏感,统一小写。 */
75
+ export declare function pathKey(file: string, platform?: NodeJS.Platform): string;
76
+ /** 项目的包管理器:package.json 的 packageManager 字段,其次按锁文件判断,默认 npm。 */
77
+ export declare function packageManager(root: string): string;
@@ -0,0 +1,175 @@
1
+ import { existsSync, readdirSync, readFileSync, realpathSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import picomatch from 'picomatch';
4
+ import { parse } from 'yaml';
5
+ const CONFIG = /(?:^|\/)(?:package\.json|tsconfig[^/]*\.json|vite(?:st)?[^/]*\.config\.[cm]?[jt]s|vitest\.(?:workspace|projects)(?:\.[^/]*)?)$/;
6
+ const CODE = /\.[cm]?[jt]sx?$/;
7
+ export const DEFAULT_IGNORE = ['**/*.md'];
8
+ /** 按类别归类改动;删除的文件归为 config(同样需要全部运行)。 */
9
+ export function classifyChanges(changes, ignore = DEFAULT_IGNORE) {
10
+ const ignored = ignore.length ? picomatch(ignore, { dot: true }) : () => false;
11
+ return changes.map((c) => {
12
+ const kind = ignored(c.path) ? 'ignored' : c.deleted || CONFIG.test(c.path) ? 'config' : CODE.test(c.path) ? 'code' : 'data';
13
+ return { ...c, kind };
14
+ });
15
+ }
16
+ /** 需要全部运行的原因(第一个不是 JS/TS 源码的相关改动);没有时返回 null。 */
17
+ export function wholeRunReason(changes) {
18
+ const hit = changes.find((c) => c.kind === 'config' || c.kind === 'data');
19
+ if (!hit)
20
+ return null;
21
+ if (hit.deleted)
22
+ return `删除文件 ${hit.path}`;
23
+ return hit.kind === 'config' ? `配置改动 ${hit.path}` : `非 JS/TS 改动 ${hit.path}`;
24
+ }
25
+ const GLOB_CHARS = /[*?[\]{}!]/;
26
+ /** 读取 workspace 包定义的目录模式:pnpm-workspace.yaml 的 packages,其次 package.json 的 workspaces。 */
27
+ function workspacePatterns(root) {
28
+ const pnpm = join(root, 'pnpm-workspace.yaml');
29
+ if (existsSync(pnpm)) {
30
+ const doc = parse(readFileSync(pnpm, 'utf8'));
31
+ return Array.isArray(doc?.packages) ? doc.packages.map(String) : [];
32
+ }
33
+ const manifest = join(root, 'package.json');
34
+ if (!existsSync(manifest))
35
+ return null;
36
+ const ws = JSON.parse(readFileSync(manifest, 'utf8')).workspaces;
37
+ if (Array.isArray(ws))
38
+ return ws.map(String);
39
+ const nested = ws?.packages;
40
+ return Array.isArray(nested) ? nested.map(String) : null;
41
+ }
42
+ /**
43
+ * 读出 workspace 包。只支持 `dir` 与 `dir/*` 两种写法;遇到 `**`、`!` 等其他写法,或一个包也没有匹配到时返回 error,
44
+ * 由调用方回退为运行仓库根的 test 脚本(不能因为包列表为空而通过)。
45
+ */
46
+ export function readWorkspace(root) {
47
+ const patterns = workspacePatterns(root);
48
+ if (patterns === null)
49
+ return { error: '未找到 pnpm-workspace.yaml 或 package.json 的 workspaces' };
50
+ const dirs = [];
51
+ for (const raw of patterns) {
52
+ const pattern = raw.replace(/^\.\//, '').replace(/\/+$/, '');
53
+ const parent = pattern.endsWith('/*') ? pattern.slice(0, -2) : null;
54
+ if (GLOB_CHARS.test(parent ?? pattern) || pattern === '' || pattern === '.') {
55
+ return { error: `不支持的 workspace 写法 ${raw}(只支持 dir 与 dir/*)` };
56
+ }
57
+ if (parent === null)
58
+ dirs.push(pattern);
59
+ else if (existsSync(join(root, parent))) {
60
+ for (const entry of readdirSync(join(root, parent), { withFileTypes: true })) {
61
+ if (entry.isDirectory())
62
+ dirs.push(`${parent}/${entry.name}`);
63
+ }
64
+ }
65
+ }
66
+ const manifests = [...new Set(dirs)]
67
+ .filter((rel) => existsSync(join(root, rel, 'package.json')))
68
+ .map((rel) => ({ rel, json: JSON.parse(readFileSync(join(root, rel, 'package.json'), 'utf8')) }));
69
+ if (manifests.length === 0)
70
+ return { error: 'workspace 没有匹配到任何包' };
71
+ const names = new Set(manifests.map((m) => m.json.name ?? m.rel));
72
+ const realRoot = realpathSync(root);
73
+ return {
74
+ packages: manifests.map(({ rel, json }) => ({
75
+ name: json.name ?? rel,
76
+ rel,
77
+ dir: join(realRoot, rel),
78
+ test: json.scripts?.test,
79
+ deps: [
80
+ ...new Set(['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].flatMap((field) => Object.keys(json[field] ?? {}).filter((dep) => names.has(dep)))),
81
+ ],
82
+ })),
83
+ };
84
+ }
85
+ /** 文件所属的包(包目录嵌套时取最深的一个)。 */
86
+ export function owningPackage(packages, path) {
87
+ return packages.filter((p) => path.startsWith(`${p.rel}/`)).sort((a, b) => b.rel.length - a.rel.length)[0];
88
+ }
89
+ /** 各包的全部上游(传递闭包)。逐包广度遍历,环依赖安全。 */
90
+ function upstreamClosure(packages) {
91
+ const byName = new Map(packages.map((p) => [p.name, p]));
92
+ const visit = (name) => {
93
+ const seen = new Set();
94
+ const queue = [name];
95
+ while (queue.length > 0) {
96
+ for (const dep of byName.get(queue.shift())?.deps ?? []) {
97
+ if (dep !== name && !seen.has(dep)) {
98
+ seen.add(dep);
99
+ queue.push(dep);
100
+ }
101
+ }
102
+ }
103
+ return [...seen];
104
+ };
105
+ return new Map(packages.map((p) => [p.name, visit(p.name)]));
106
+ }
107
+ /**
108
+ * 逐包判定模式:候选包为有改动的包及其下游。
109
+ * changes:包名 → 该包的改动(不含 ignored)。
110
+ */
111
+ export function decideTestModes(packages, changes, opts = {}) {
112
+ const ups = upstreamClosure(packages);
113
+ const relevant = (name) => (changes.get(name) ?? []).filter((c) => c.kind !== 'ignored');
114
+ const seeds = packages.filter((p) => relevant(p.name).length > 0).map((p) => p.name);
115
+ return packages
116
+ .filter((p) => opts.wholeAll || seeds.includes(p.name) || ups.get(p.name).some((up) => seeds.includes(up)))
117
+ .map((pkg) => {
118
+ const { name } = pkg;
119
+ if (!pkg.test)
120
+ return { name, mode: 'skip', reason: '没有 test 脚本' };
121
+ if (opts.wholeAll)
122
+ return { name, mode: 'whole', reason: opts.wholeAll };
123
+ const own = relevant(name);
124
+ const changedUps = ups.get(name).filter((up) => relevant(up).length > 0);
125
+ if (pkg.test.trim() !== 'vitest run')
126
+ return { name, mode: 'whole', reason: 'test 脚本不是 vitest run' };
127
+ const listed = opts.wholePackages?.get(name);
128
+ if (listed !== undefined)
129
+ return { name, mode: 'whole', reason: listed || '配置为整包运行' };
130
+ const nonCode = own.find((c) => c.kind !== 'code');
131
+ if (nonCode) {
132
+ const why = nonCode.deleted ? '删除文件' : nonCode.kind === 'config' ? '配置改动' : '非 JS/TS 改动';
133
+ return { name, mode: 'whole', reason: `${why} ${nonCode.rel}` };
134
+ }
135
+ const upNonCode = changedUps.find((up) => relevant(up).some((c) => c.kind !== 'code'));
136
+ if (upNonCode)
137
+ return { name, mode: 'whole', reason: `上游 ${upNonCode} 有配置、删除或非 JS/TS 改动` };
138
+ const inputs = own.map((c) => c.abs);
139
+ if (own.length > 0)
140
+ inputs.push(...(opts.sourceGuards?.[name] ?? []).map((rel) => join(pkg.dir, rel)));
141
+ for (const up of changedUps)
142
+ inputs.push(...relevant(up).map((c) => c.abs));
143
+ const files = [...new Set(inputs)];
144
+ return { name, mode: 'related', reason: `输入 ${files.length} 个文件`, files, own: own.length > 0 };
145
+ });
146
+ }
147
+ /** 仓库根 package.json 的 test 脚本;没有 package.json 时返回 null。 */
148
+ export function rootTestScript(root) {
149
+ const manifest = join(root, 'package.json');
150
+ if (!existsSync(manifest))
151
+ return null;
152
+ return JSON.parse(readFileSync(manifest, 'utf8')).scripts?.test;
153
+ }
154
+ /** 比较路径用的键:绝对路径、/ 分隔;Windows 文件系统大小写不敏感,统一小写。 */
155
+ export function pathKey(file, platform = process.platform) {
156
+ const key = resolve(file).replaceAll('\\', '/');
157
+ return platform === 'win32' ? key.toLowerCase() : key;
158
+ }
159
+ /** 项目的包管理器:package.json 的 packageManager 字段,其次按锁文件判断,默认 npm。 */
160
+ export function packageManager(root) {
161
+ const manifest = join(root, 'package.json');
162
+ const declared = existsSync(manifest)
163
+ ? JSON.parse(readFileSync(manifest, 'utf8')).packageManager
164
+ : undefined;
165
+ if (declared)
166
+ return declared.split('@')[0];
167
+ if (existsSync(join(root, 'pnpm-lock.yaml')))
168
+ return 'pnpm';
169
+ if (existsSync(join(root, 'yarn.lock')))
170
+ return 'yarn';
171
+ if (existsSync(join(root, 'bun.lockb')) || existsSync(join(root, 'bun.lock')))
172
+ return 'bun';
173
+ return 'npm';
174
+ }
175
+ //# sourceMappingURL=test-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-scope.js","sourceRoot":"","sources":["../src/test-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * 以 vitest 的 Node API 运行测试:用法 node vitest-runner.js <输入 JSON 文件>,工作目录为 vitest 的项目目录。
3
+ * 由 core/test-affected 以子进程启动,避免 vitest 在插件进程中加载项目配置。要求 vitest >= 3.0(getRelevantTestSpecifications 自 3.0 起提供)。
4
+ *
5
+ * 输入 JSON:{ vitest: vitest/node 入口的绝对路径, files: 改动文件的绝对路径或 null, report: JSON 报告路径, result: 结果路径 }。
6
+ * 文件列表经文件传入而非命令行参数,不受 Windows 命令行长度上限影响。
7
+ * files 为 null 时运行全部测试(等同 vitest run);否则只运行相关测试(等同 vitest related --run)。
8
+ * 输入文件命中 vitest 配置文件及其导入的文件、setupFiles、globalSetup 及它们导入的本地文件时改为全部运行。
9
+ *
10
+ * 退出码:0 通过或没有测试;1 有测试失败;3 vitest 启动或求相关测试失败,调用方应回退为全部运行;
11
+ * 4 项目的 vitest 缺少所需 API(版本过低),结果文件写入 { incompatible: 说明 }。
12
+ * 结果文件写入 { selected: 选中的测试文件数, whole?: 改为全部运行的原因 };没有选中测试时也写入空报告。
13
+ */
14
+ import { readFileSync, writeFileSync } from 'node:fs';
15
+ import { pathToFileURL } from 'node:url';
16
+ import { pathKey } from './test-scope.js';
17
+ const FALLBACK_EXIT = 3;
18
+ const INCOMPATIBLE_EXIT = 4;
19
+ const MIN_VERSION = 'vitest >= 3.0';
20
+ function fail(message) {
21
+ process.stderr.write(`vitest 无法运行:${message}\n`);
22
+ process.exit(FALLBACK_EXIT);
23
+ }
24
+ function incompatible(missing) {
25
+ const message = `项目的 vitest 缺少 ${missing},需要 ${MIN_VERSION}`;
26
+ process.stderr.write(`${message}\n`);
27
+ writeFileSync(input.result, JSON.stringify({ selected: 0, incompatible: message }));
28
+ process.exit(INCOMPATIBLE_EXIT);
29
+ }
30
+ const strings = (value) => [value ?? []].flat().filter((f) => typeof f === 'string');
31
+ /**
32
+ * 只能整体重跑的文件:各项目的配置文件及其导入的文件(vite 的 configFileDependencies)、setupFiles、globalSetup
33
+ * 以及它们导入的本地文件(related 只沿测试文件的 import 图追踪,追不到 setup 文件的依赖)。
34
+ * 返回比较键集合;无法求出 setup 文件的依赖时返回原因字符串,由调用方全部运行。
35
+ */
36
+ async function wholeTriggers(vitest) {
37
+ const files = [
38
+ ...strings(vitest.vite?.config?.configFile),
39
+ ...strings(vitest.vite?.config?.configFileDependencies),
40
+ ...strings(vitest.config?.workspace),
41
+ ];
42
+ for (const project of vitest.projects ?? []) {
43
+ files.push(...strings(project.vite?.config?.configFile), ...strings(project.vite?.config?.configFileDependencies));
44
+ for (const setup of [...strings(project.config?.setupFiles), ...strings(project.config?.globalSetup)]) {
45
+ files.push(setup);
46
+ // 依赖包中的 setup 文件不随项目改动变化
47
+ if (setup.replaceAll('\\', '/').includes('/node_modules/'))
48
+ continue;
49
+ if (typeof vitest.specifications?.getTestDependencies !== 'function')
50
+ return `无法求出 setup 文件 ${setup} 的依赖`;
51
+ const deps = (await vitest.specifications.getTestDependencies(project.createSpecification(setup)));
52
+ files.push(...deps);
53
+ }
54
+ }
55
+ return new Set(files.map((f) => pathKey(f)));
56
+ }
57
+ // 与 vitest CLI 一致(createVitest 不设置这些变量)
58
+ process.env.NODE_ENV ??= 'test';
59
+ process.env.TEST = 'true';
60
+ process.env.VITEST = 'true';
61
+ let input;
62
+ try {
63
+ input = JSON.parse(readFileSync(process.argv[2], 'utf8'));
64
+ }
65
+ catch (error) {
66
+ fail(`读取输入失败:${error.message}`);
67
+ }
68
+ let vitest;
69
+ let selected;
70
+ let whole;
71
+ try {
72
+ const { createVitest } = (await import(pathToFileURL(input.vitest).href));
73
+ if (typeof createVitest !== 'function')
74
+ incompatible('createVitest');
75
+ vitest = await createVitest('test', {
76
+ run: true,
77
+ watch: false,
78
+ passWithNoTests: true,
79
+ reporters: ['default', 'json'],
80
+ outputFile: { json: input.report },
81
+ ...(input.files ? { related: input.files } : {}),
82
+ });
83
+ if (typeof vitest.getRelevantTestSpecifications !== 'function') {
84
+ await vitest.close?.().catch(() => { });
85
+ incompatible('getRelevantTestSpecifications');
86
+ }
87
+ if (input.files) {
88
+ const triggers = await wholeTriggers(vitest);
89
+ const hit = typeof triggers === 'string' ? undefined : input.files.find((f) => triggers.has(pathKey(f)));
90
+ if (typeof triggers === 'string')
91
+ whole = triggers;
92
+ else if (hit)
93
+ whole = `${hit} 是 vitest 配置、setup 文件或它们导入的文件`;
94
+ if (whole)
95
+ vitest.config.related = undefined;
96
+ }
97
+ const specs = (await vitest.getRelevantTestSpecifications());
98
+ selected = new Set(specs.map((s) => s.moduleId)).size;
99
+ }
100
+ catch (error) {
101
+ await vitest?.close().catch(() => { });
102
+ fail(String(error?.stack ?? error));
103
+ }
104
+ writeFileSync(input.result, JSON.stringify({ selected, whole }));
105
+ if (selected === 0) {
106
+ writeFileSync(input.report, JSON.stringify({ numTotalTests: 0, numFailedTests: 0, testResults: [] }));
107
+ await vitest.close();
108
+ process.exit(0);
109
+ }
110
+ let failed = true;
111
+ try {
112
+ await vitest.start();
113
+ const state = vitest.state;
114
+ failed =
115
+ Boolean(process.exitCode) ||
116
+ state.getUnhandledErrors().length > 0 ||
117
+ state.getFiles().some((file) => file.result?.state === 'fail');
118
+ }
119
+ catch (error) {
120
+ process.stderr.write(`${error?.stack ?? error}\n`);
121
+ }
122
+ finally {
123
+ await vitest.close().catch(() => { });
124
+ }
125
+ process.exit(failed ? 1 : 0);
126
+ //# sourceMappingURL=vitest-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest-runner.js","sourceRoot":"","sources":["../src/vitest-runner.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-core",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "通用检查插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.0",
16
+ "@sumi/plugin-sdk": "0.5.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  },
@@ -102,6 +102,16 @@ function verify(localRef, localOid, remoteRef, remoteOid) {
102
102
  }
103
103
  else {
104
104
  base = tryGit(['merge-base', remoteOid, commit]);
105
+ // rebase 到默认分支后强制推送:与远端旧提交的合并基础停在旧主干上,
106
+ // 取与默认分支远端跟踪 ref 更近的合并基础,主干上的新提交不计入改动
107
+ const defaultBranch = configAt(root, commit)?.gate?.defaultBranch ?? 'main';
108
+ const tracking = tryGit(['rev-parse', '--verify', '--quiet', `refs/remotes/${remote}/${defaultBranch}`]);
109
+ const mainBase = tracking ? tryGit(['merge-base', tracking, commit]) : null;
110
+ if (base && mainBase && mainBase !== base) {
111
+ const newer = spawnSync('git', ['merge-base', '--is-ancestor', base, mainBase], { cwd: root, windowsHide: true }).status === 0;
112
+ if (newer)
113
+ base = mainBase;
114
+ }
105
115
  if (!base)
106
116
  ask(outcome, 'unrelated-import', { remote, ref: remoteRef, old: remoteOid, new: commit, trusted: remoteOid }, `确认用无共同祖先的历史覆盖 ${remoteRef}`, []);
107
117
  ask(outcome, 'force-update', { remote, ref: remoteRef, old: remoteOid, new: commit }, `确认强制更新 ${remoteRef}`, []);
@@ -1 +1 @@
1
- {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/commands/gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/commands/gate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-governance",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "治理插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.0",
16
+ "@sumi/plugin-sdk": "0.5.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-openspec",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "OpenSpec 插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.0"
16
+ "@sumi/plugin-sdk": "0.5.1"
17
17
  },
18
18
  "files": [
19
19
  "dist",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-precedent",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "判例插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.0",
16
+ "@sumi/plugin-sdk": "0.5.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7",
19
- "@sumi/plugins-governance": "0.5.0"
19
+ "@sumi/plugins-governance": "0.5.1"
20
20
  },
21
21
  "files": [
22
22
  "dist",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sumi/plugins-review",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "评审插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/plugin-sdk": "0.5.0",
16
+ "@sumi/plugin-sdk": "0.5.1",
17
17
  "yaml": "2.9.1",
18
18
  "picomatch": "4.0.7",
19
- "@sumi/plugins-governance": "0.5.0"
19
+ "@sumi/plugins-governance": "0.5.1"
20
20
  },
21
21
  "files": [
22
22
  "dist",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fantasticit/sumi",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "sumi 命令行",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,14 +13,14 @@
13
13
  "./package.json": "./package.json"
14
14
  },
15
15
  "dependencies": {
16
- "@sumi/create": "0.5.0",
17
- "@sumi/kernel": "0.5.0",
18
- "@sumi/plugin-sdk": "0.5.0",
19
- "@sumi/plugins-core": "0.5.0",
20
- "@sumi/plugins-governance": "0.5.0",
21
- "@sumi/plugins-openspec": "0.5.0",
22
- "@sumi/plugins-precedent": "0.5.0",
23
- "@sumi/plugins-review": "0.5.0",
16
+ "@sumi/create": "0.5.1",
17
+ "@sumi/kernel": "0.5.1",
18
+ "@sumi/plugin-sdk": "0.5.1",
19
+ "@sumi/plugins-core": "0.5.1",
20
+ "@sumi/plugins-governance": "0.5.1",
21
+ "@sumi/plugins-openspec": "0.5.1",
22
+ "@sumi/plugins-precedent": "0.5.1",
23
+ "@sumi/plugins-review": "0.5.1",
24
24
  "tar": "7.5.22",
25
25
  "yaml": "2.9.1"
26
26
  },
@@ -42,5 +42,5 @@
42
42
  "tar",
43
43
  "yaml"
44
44
  ],
45
- "sumiBuild": "sha256:ec99888b5e477b3a48dadcdce87ecff0b739453d21a05473594292a6f748fea9"
45
+ "sumiBuild": "sha256:41604b38ed0dcbc266d974d96f268b55a6f6f6cc55b8f50928be120668fcc42b"
46
46
  }