如何测试迁移方案¶
要测试迁移方案,请使用以下 mach 命令
./mach fluent-migration-test python/l10n/fluent_migrations/bug_1485002_newtab.py
这将分析您的迁移方案,以检查migrate
函数是否存在,以及是否与迁移上下文正确交互。通过检查后,它会将firefox-l10n-source
克隆到$OBJDIR/python/l10n
,通过将您本地的 Fluent 字符串添加到firefox-l10n-source
中的字符串来创建参考本地化。然后,它运行迁移方案,既作为试运行,也作为实际迁移。最后,它分析提交,并检查是否实际运行了任何迁移,以及提交消息中的 Bug 编号是否与迁移名称匹配。
执行结束时,如果迁移后的文件与参考内容之间存在差异,输出将包含差异(空行会自动忽略)。即使方案正确,某些情况下也可能仍然需要差异。
如果补丁包含未迁移的新字符串,则差异输出会将这些字符串显示为删除。这是因为迁移方案测试包含来自
firefox-l10n-source
的最新版本字符串,其中仅应用了迁移,而参考文件包含补丁引入的所有字符串更改。如果方案中包含的 FTL 文件在过去几天内有未决更改,并且尚未推送到
firefox-l10n-source
(它们位于firefox-l10n-source
的update
分支中),这些更改将显示为添加。
如果显示了差异,并且补丁不属于突出显示的情况,则迁移方案可能存在问题。
您可以通过查看以下内容进一步检查生成的代码库
ls $OBJDIR/python/l10n/bug_1485002_newtab/en-US
注意事项¶
请注意迁移中硬编码的英文上下文。例如,请考虑
ctx.add_transforms(
"browser/browser/preferences/siteDataSettings.ftl",
"browser/browser/preferences/siteDataSettings.ftl",
transforms_from(
"""
site-usage-persistent = { site-usage-pattern } (Persistent)
""")
)
此转换将通过手动比较,因为这两个文件相同,但会导致(Persistent)
在所有语言中都硬编码为英文。