用途:在 Deno 项目中处理 Node.js 兼容性测试(node compat tests),针对指定测试完成构建、运行、诊断与修复或标记。
主要能力与流程:
- 构建并运行测试:执行 ./x build,再执行 ./x test-compat $ARGUMENTS;若通过则确认测试已登记在 tests/node_compat/config.jsonc 中。
- 诊断失败:测试位于 tests/node_compat/test/ 下,需阅读测试源码,判断被测的 Node.js API 或行为、实际报错或断言失败,并在 ext/node/、runtime/ 或 cli/ 中定位相关实现,同时参考 Node.js 文档或源码确认预期行为。
- 分类失败:A 可修复缺陷(polyfill 缺方法、返回值或错误类型错误、缺少事件触发、参数处理错误等)→ 修复实现;B 固有不可兼容(internalBinding 调用、Node 专有 CLI 标志、V8 内部、node-gyp 工具链等)→ ignore;C 不值得修复(生僻报错措辞、弃用警告等)→ ignore 或 skip。
- 修复实现:修改 ext/node/ 等位置,尽量使用惰性导入与 primordials;改完必须重新 ./x build 再运行 ./x test-compat $ARGUMENTS;通过后在 config.jsonc 中按分类内字母序添加形如 "category/test-name.js": {} 的条目。
- 跳过或忽略:在 config.jsonc 中忽略需写 "ignore": true 与具体 reason,缺少 reason 会导致 lint 失败;平台专属可用 "windows": false;预期失败可用 exitCode、output 与 reason。
- 验证:最后再次运行 ./x test-compat $ARGUMENTS 确认结果符合预期。
适用场景:在 Deno 仓库中推进 Node.js 兼容性、分类待处理测试、或在 PR 中修正测试配置。
限制与约定:config 的完整 schema 见 tests/node_compat/schema.json;PR 前缀约定为 test:(仅改配置)与 fix(ext/node):(修实现并启用测试)。技能内容为工作流程指引,未提供其他安装方式、收费或平台信息。