☰
MooTool Next macOS Native 0.8.0 验收全记录:59 组核心测试、Smoke 全绿与三语国际化交付
2026/10/16 1:55:09 网站建设 项目流程
  • 桌面应用
  • 开发工具

【免费下载链接】MooTool

Handy tool set for developers

项目地址:https://gitcode.com/gh_mirrors/mo/MooTool
点击查看免费下载

本文基于 MooTool 开源仓库中next-macos-native(macOS 原生版)的0.8.0 验收记录(verification-0.8.0.md)整理而成。0.8.0 是该产品线的首个公开预发布版,本文完整梳理其自动化验收体系(check-core.sh59 组测试、smoke.sh界面/交互全绿)、交付功能范围(文本对比工作区、菜单栏托盘、关闭主窗口行为、SQLite 数据迁移等)、三语国际化覆盖边界与手工验收建议。读者读完后可以掌握这套 macOS 原生工具产品的质量门禁做法、0.8.0 的完整功能清单,以及如何复现对应验收流程。

一、0.8.0 验收概况

next-macos-native是 MooTool 独立的 macOS 产品线,使用 SwiftUI、AppKit 和系统框架实现,沿用nextElectron 版的 26 个工具入口、分组导航和编辑工作区(详见 next-macos-native/README.md)。0.8.0 是其首个公开预发布版(GitHub tagnext-macos-native-v0.8.0,prerelease且make_latest: false,详见 parity.md)。

验收记录给出的核心结论是:

命令结果说明
./scripts/check-core.sh59 组,0 失败含 SQLite 导入(HTTP / Host / 翻译 / 收藏 / 历史 / 草稿 /t_quick_note/t_json_beauty);2026-09-17 工作树终验复跑通过
./scripts/smoke.sh通过(偶发需复跑)附件、随手记、JSON、格式化、文档库选区/滚动、86 张截图、重启持久化;2026-09-17 两批 i18n 后均单次全绿(约 6.1 min / 8.6 min)

最近一次 smoke 全绿为2026-09-17:调色板 / Cron describe / JSON worker / 计算器标签等批次后单次通过(约 6.1 min);同日 Markdown 预览 / 托盘·附件批次(约 8.6 min)亦全绿。

二、自动化验收体系:check-core 与 smoke 双门禁

2.1 check-core.sh:命令行工具集环境下的 59 组核心测试

check-core.sh 是核心逻辑的回归门禁,解决了一个 macOS 工程常见的痛点:Command Line Tools(CLT)环境不包含 XCTest 框架。它的做法是:

  1. 先执行 check-toolchain.sh 校验工具链(要求 macOS SDK 26、Swift 6.2+,应用运行最低版本仍为 macOS 14);
  2. swift build构建MooToolNextCore,并收集MooToolNextCore.build、Yams.build、CYaml.build的全部目标文件;
  3. 用swiftc -parse-as-library -D STANDALONE_CHECK把测试用例 CoreTests.swift 与 StandaloneTests.swift 一起编译成独立可执行文件MooToolNativeCoreChecks;
  4. 直接运行该可执行文件,按组输出 PASS/FAIL 并统计失败数。

StandaloneTests.swift 中定义了轻量XCTestCase/XCTAssert*桩实现,让同一份CoreTests.swift测试体在 CLT 和完整 Xcode(swift test)两条路径下都能运行。最终汇总的 59 组覆盖范围包括:文本对比 Electron 样例、格式化解析器与独立辅助程序、图片附件插入/备份/导出、随手记快速替换与 Markdown 块、JSON 原生格式化/JSONPath/转换/查找替换、文档库层级与原子导入、Vault Git 检查点调度、编码往返、RSA/SM2/AES-GCM、正则、配置转换、时间、计算器、Cron、Protobuf、PDF 页码、HTTP 校验/cURL 往返、扩展工作区与产品隔离等,另有 5 组异步用例(进程捕获超时、本地 HTTP 响应、重定向与会话隔离、JSON worker 超时取消、Reformat worker 隔离)。

2.2 smoke.sh:真实界面与交互的全绿验收

smoke.sh 是界面级验收门禁,运行在已登录桌面环境,会:

  • 先swift build,创建临时隔离数据目录(MOOTOOL_NATIVE_TEST_DATA)与验收截图目录(MOOTOOL_NATIVE_SCREENSHOTS,即dist/acceptance/);
  • 以--smoke-test参数启动MooToolNextNative应用,执行附件的NativeAttachmentAcceptance、随手记NativeNoteAcceptance、JSONNativeJSONAcceptance、VaultNativeVaultAcceptance、格式化NativeReformatAcceptance、文本对比NativeDiffAcceptance等专项验收,随后以--verify-workspace校验重启持久化;
  • 生成浅/深色主题、窄窗口等共 86 张界面截图,并把报告与日志写入dist/acceptance/。

smoke 支持按需裁剪的专项参数,便于定位问题域:

./scripts/smoke.sh --window-capture # 完整窗口截图,含系统工具栏与材质层 ./scripts/smoke.sh --chrome-only # 工具栏动作、搜索控件、分栏宽度与 12 种窗口布局 ./scripts/smoke.sh --feedback-only # 浮动提示关闭/超时、材质回退、双主题/窄窗口及重启恢复 ./scripts/smoke.sh --notes-only # 仅随手记、附件交互及新进程恢复 ./scripts/smoke.sh --window-capture --format-only # 仅格式化交互、5 种布局和重启恢复 ./scripts/smoke.sh --window-capture --diff-only # 仅文本对比交互、5 种布局和重启恢复 ./scripts/smoke.sh --window-capture --note-layouts-only # 仅随手记布局和图片分栏宽度回归

验收使用临时数据目录及.acceptance偏好域,不会访问真实工作区;操作的是实际 NSTextView 与原生按钮,检查差异高亮、导航、统一只读补丁、格式化撤销、快速切换、文档与图片附件、独立工作区以及新进程恢复。

2.3 验收中的稳定性加固(flaky 治理)

从验收记录可见,0.8.0 期间针对负载下的偶发失败做了多轮针对性加固,这也是值得参考的工程实践:

  • JSON worker / JSON 验收超时放宽至10s(提交dc5f1049后 smoke 单次全绿约 3.7 min);
  • 文本对比统一输出、JSON 输入转换与格式化文件模式增加轮询等待(bb07bcc1、ee738d0d、1faf101c等提交);
  • 随手记查找计数等待加长(waitForFind);
  • 格式化 smoke 验收加长撤销/历史等待(NativeReformatAcceptance)。

这些改动背后的诱因是 SwiftPM 并发构建抢占.build目录导致的偶发超时,记录中多次出现“首轮失败、单独复跑通过”的同一类 flake。

三、0.8.0 功能范围

验收记录将 0.8.0 的重点归纳为:

  • 文本对比工作区(双编辑器、统一视图、历史恢复);
  • 工作台分栏与迁移(Electronmootool-next.json合并布局/代理/编辑器与 Git 选项);
  • 加密 / Host / 翻译 / 收藏;
  • SQLite 历史与t_func_content草稿导入;
  • 菜单栏托盘与关闭主窗口行为(general.closeBehavior:询问 / 隐藏 / 退出)。

3.1 文本对比工作区(0.8.0 核心交付)

文本对比改为与 Electron 对应的双编辑器工作区,支持字符与行高亮、统一补丁、忽略空白、差异导航、同步滚动、交换、复制和历史恢复;940px 窄窗口采用两行工具栏(详见 text-diff-workspace.md)。

从引擎实现 TextDiff.swift 可以看到关键技术约束与设计:

  • 输入变化后约160 毫秒自动比较;比较在后台执行,不会用过期结果覆盖当前工作区;
  • 资源保护上限:总输入限50 万 UTF-16 单元,左右行数乘积限1000 万(对应测试testTextDiffWhitespaceTrailingLinesAndBounds中的String(repeating: "x", count: 500_001)抛错用例);
  • 一对需比较的行合计超过4000 单元时改用行级高亮(maximumCharacterPair = 4_000),统一补丁仍保留完整内容;
  • 统一补丁按三行上下文分组输出(@@ -oldStart,count +newStart,count @@),忽略空白只隐藏对应高亮,不删改真实补丁(测试样例验证one two与one two忽略空白后 segments 为空、但 unified 仍含-one two/+one two);
  • 高亮使用 NSTextView 临时文本背景,尚未包含 Monaco 的行侧边标记及完整编辑装饰(明确列在边界内)。

3.2 菜单栏托盘与关闭主窗口行为

菜单栏托盘(MenuBarTray.swift)提供打开、设置、屏幕取色、区域截图、翻译与 Host 配置切换等快捷入口,托盘菜单项随general.language刷新;通过general.trayEnabled可关闭。取色通过系统NSColorSampler完成,截图调用/usr/sbin/screencapture -i -x。

关闭主窗口行为(MainWindowClosePolicy.swift)与 Electron 的closeBehavior一致:默认ask弹出「隐藏窗口 / 退出 / 取消」确认;hide仅orderOut隐藏;quit直接终止应用。smoke/verify 模式下直接关闭以支持无人工验收。

3.3 GitHub 更新检查

帮助菜单与设置 → 关于通过 GitHub Releases API 检查更新(UpdateChecker.swift):启动时受general.autoCheckUpdates控制,若同时开启autoDownloadUpdates则发现新版本直接打开下载页;暂无后台安装器(明确列为 0.8 边界)。

四、三语国际化(zh-CN / en-US / ja-JP)交付范围

0.8.0 的大头工作是界面与 Core 错误的三语化。验收记录按批次逐条确认,可归纳为以下几层:

界面层(侧栏/工作台/工具面板):侧栏/搜索/26 个工具名三语、首页区块与设置分类标题、工作台工具栏与 ToolPage/共享编辑器栏、应用菜单、历史弹窗、调色板工具栏、翻译三标签(翻译/词库/历史)、HTTP 请求/响应分栏与表单/集合弹窗、Host/收藏弹窗与AppStore.run状态、网络工具面板、Cron 工作区与首页其他作品、留言板/系统信息工具栏、自定义分组与侧栏工具显示 sheet、二维码/图片/PDF 工具栏、文本对比工作区、格式化工作区、JSON 主工作区(工具栏/检查器/查找条/弹窗/历史 sheet)与结构树/路径选择面板(JSONTreePane)、文档库侧栏(JSON/随手记)、随手记编辑区(工具栏/查找/24 项快速替换)与 Markdown 预览块级 UI(quickNote.preview.*)。

Core 层(用户可见 ToolError):MooToolNextCore 内硬编码中文清零。覆盖键名前缀包括:

键名前缀覆盖范围
encode.error.*/config.error.*/regex.error.*/calculator.error.*编码、配置转换、正则、计算器 Core 校验错误
reformat.error.*/reformat.undo.*格式化宿主/ReformatTools边界错误与撤销动作名(含vendor/formatters/entry.js重打包)
cron.error.*、cron.describe.*/cron.weekday.*Cron 解析/构建/运行次数错误与可读摘要(QuartzCronParser/CronExpression、CronToolView传language)
protobuf.error.*/messageBoard.error.*Protobuf wire 解析与留言板选项校验
textCrypto.error.*TextTool /CryptoToolViewlegacy AES-GCMTextServices.digest校验错误
textDiff.error.*文本对比输入超限错误(TextDiffEngine.compare)
crypto.error.*/crypto.verify.*/encode.error.base32InvalidRSA/SM2/RSAOpenSSLBridge错误与验签结果、对称 AES/DES/SM4 ECB、Base32
http.error.*/http.curl.*/http.field.*/http.multipart.*/process.error.*/net.error.*HTTP/ProcessRunner/网络诊断校验错误
migration.error.*/migration.warning.*/backup.error.*/workspace.error.*Electron 设置/SQLite 导入与备份校验、迁移 warnings
vault.error.*/vault.import.error.*文档库校验/重命名/移动/批量导入、DocumentImportReader批量导入校验
git.error.*/git.result.*VaultGitService用户可见ToolError与操作结果摘要
quickNote.error.*/attachment.error.*/backup.error.attachment*/quickNote.image.*随手记查找替换限额、图片预览/插入队列、备份恢复附件路径
host.error.*/host.validate.*Host 校验/配置保存错误与校验结果摘要
timeConvert.error.*/timeConvert.detail.*时间转换校验错误与「详细解析」字段标签
tray.status.*菜单栏托盘操作状态
color.preview.title/color.label.*/calculator.label.*调色板预览标题与结果栏格式标签、计算器进制转换结果行标签
vault.status.deletedDraftKeptVaultStore 删除草稿提示
json.valid.*JSON worker(JSONDispatch.js+JSONTools.js)校验 idle/ok/error

worker 层:JSON worker(JSONDispatch.js)宿主与 worker 校验文案随language三语,请求携带language;legacy TextTool JSON/紧凑加密与 crypto 稳定模式键保持稳定算法键。

五、数据迁移范围

0.8.0 的设置 → 数据迁移支持从 ElectronMooToolNext.db或 Java~/.MooTool/MooTool.db的 SQLite 表合并(详见>

  • 桌面应用
  • 开发工具

【免费下载链接】MooTool

Handy tool set for developers

项目地址:https://gitcode.com/gh_mirrors/mo/MooTool
点击查看免费下载

相关推荐

上一篇:探索WindFM-Tokenizer的未来:路线图与风电预测技术发展趋势
下一篇:FauxPilot跨语言支持测试:Java/JavaScript补全效果评估

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询