feat: release v0.26 portable i18n and presentation adapters

This commit is contained in:
2026-09-29 13:31:42 +08:00
parent 6a95cad184
commit d1a747c36f
75 changed files with 5681 additions and 52 deletions

75
reports/i18nAcceptance.md Normal file
View File

@@ -0,0 +1,75 @@
# v0.26 通用国际化验收(2026-09-29)
交付范围:独立不可变词典、可选 HTTP/错误适配、CLI 检查/提取/导出、TypeScript 类型和独立浏览器运行时。普通消息、错误源文案、启用语言、用户偏好、资源提供方式均由项目维护;示例不依赖数据库或其他项目。
## 已通过的验证
环境:macOS / Apple M2 Max,Go 1.27.1,Node.js 22.15.1,TypeScript 5.6.3;最低版本另用 Go 1.22.12 核验。TypeScript 编译器通过 npm 临时缓存使用,没有添加项目 npm 依赖。
| 验证 | 结果 |
| --- | --- |
| `go test -race ./...` | 54 个有测试的包通过;未启用集成环境变量的生成消费者单独执行如下 |
| `go vet ./...`、`go build ./...`、`git diff --check` | 通过 |
| `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test ./cmd/go-omni/apigen -run 'TestI18nGeneratedConsumer\|TestErrorInheritance\|TestErrorParamsConsumer' -count=1 -v` | 3 组真实生成项目生成、重复生成、check 和消费者 race 测试通过 |
| Go 1.22.12:`go test ./i18n/... ./app ./errors ./response ./httpx ./config ./cmd/go-omni ./examples/i18n` | 全部通过 |
| Go 1.22.12:开启集成测试,`go test ./cmd/go-omni/apigen -run TestI18n -count=1 -v` | translation 元数据边界、真实生成消费者通过 |
| `node --test i18n/browser/runtime.test.mjs` | 4 组通过,包含覆盖、并发切换、最新失败/过期请求、坏包与读取上限 |
| `TestPinnedCLDRSamples` | 5,777 个上游普通基数规则样例端点通过;不把省略号和紧凑数字样例计入 |
| `TestBrowserConformance`、`TestSourceLocaleCanBeFallbackOnly` | Go 导出包在 Node 中执行,中文/英文/俄文/阿拉伯文/法文、精确 int64、小数、回退与源语言未启用通过;cmn 别名及私用标签不由浏览器改写 |
| `TestTypeScriptConsumer`(PATH 提供 tsc) | strict / ES2022 / NodeNext 编译通过;缺参、错类型、多余参数、未知键/命名空间必须产生编译诊断 |
| `go test ./i18n -run '^$' -fuzz FuzzDecodeJSON -fuzztime 10s` | 419,121 次执行通过 |
| 示例 CLI、词典 check、示例 HTTP 测试 | 通过;示例中英文输出及中文错误 HTTP 409 / code 400001 保持 |
最后的 TypeScript 类型修正后,重新执行了 `i18n/...`、CLI、示例 race 测试及对应 Go 1.22 验证。核心一致性及类型验证可复现为:
```sh
npm exec --yes --package typescript@5.6.3 -- go test ./i18n \
-run 'TestTypeScriptConsumer|TestPinnedCLDRSamples|TestBrowserConformance|TestSourceLocaleCanBeFallbackOnly' \
-count=1 -v
```
原始日志见 [i18nValidation.txt](i18nValidation.txt)。
## 兼容和隔离覆盖
- 多 Bundle、多 App、并发请求与多个命名空间不共享可变语言状态;构建输入与导出快照修改不影响实例。
- 项目目录和路由独立目录同名错误正确选取各自翻译;固定旧文案的字面花括号保留。
- 翻译仅进入展示层。HTTP 200 业务失败、HTTP 409/401/500、int64 业务码、嵌套响应模板、旧 Messages 校验、RawJSON 错误、认证提前返回、panic、缺参数和缓冲桥接均有回归。
- 参数值不重新解释为模板,内部 cause 不进入响应;Localizer 或偏好 Resolver panic 不把语言故障传播成新的业务执行结果。
- 自定义固定回执由原 Encoder 控制;直接 Text/JSON 等输出不自动改写。自定义 Encoder 可显式采用 PublicMessage。
- 本地/共享幂等重放保留首次响应,即使后续请求语言不同也只执行业务一次。
- 资源严格校验、循环回退、参数契约不一致、缺键诊断、显式覆盖、CLI 输入不被改写、旧 runtime 能力门槛均有测试。
## 浏览器实测
使用独立示例启动本机 `127.0.0.1:8098`,执行了:
1. 输入测试草稿,从英文切为中文:草稿保留,提交次数为 0。
2. 点击提交:次数变为 1。切回英文:草稿保留,次数仍为 1。
3. 停止示例服务后再选择中文:显示加载失败,仍停留在英文,草稿和一次提交保留。
示例服务和临时浏览器页面已关闭。乱序和快速重复选择由浏览器运行时自动测试验证。
## Go 1.22 发布前兼容性修复
初轮全仓 Go 1.22 验收暴露了两处旧问题,发布准备阶段已修复:
- 共享 Go 目录测试工程的 go.mod 从 1.24.0 调整为框架声明支持的 1.22.0,远程验收的同类测试工程同步调整。
- JSON 对象/数组结束定界符读取失败时保留底层错误,外层 MaxBytesReader 的限额错误继续被识别为 HTTP 413。新增对象、数组、嵌套结构的 reader cause 回归,原有 limit=0/1/4 测试保留。
最初发现问题的日志仍保留在 i18nValidation.txt 中,便于追溯;发布前的最终结果单独记录在 i18nReleaseValidation.txt 中。
## 发布前最终验收
- `GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race ./...`:54 个有测试的包通过,包含实际生成消费者;PATH 提供 TypeScript 5.6.3,跨端和类型测试实际执行。
- `GOTOOLCHAIN=go1.22.12 GO_OMNI_SCAFFOLD_INTEGRATION=1 go test ./...`:全仓通过,先前两处失败已消除。
- `go vet ./...`、`go build ./...`、浏览器运行时测试、发布脚本语法检查、`git diff --check`:通过。
- `python3 scripts/verifyManagedProject.py --report reports/i18nManagedLocal.json`:真实生成项目运行、构建、重复生成、nethttp/native 信号退出、上传下载与故障清理通过;临时进程已清理。[机器记录](i18nManagedLocal.json)。
完整最终输出见 [i18nReleaseValidation.txt](i18nReleaseValidation.txt)。发布后再从空 module 缓存安装固定标签,验证没有本地 replace;远程报告独立提交,不移动发布标签。
## 性能与发布边界
`BenchmarkRender` 对俄文基数复数、22 参数的单条消息,当前机器一次测量为 3,753 ns/op、1,040 B/op、27 allocs/op;这只是开发机样本,不代表 SLA 或与旧实现的性能对比。
本次按 Go module 标签 `v0.26.0-preview` 发布;浏览器运行时随 module 分发,没有单独发布 npm 包。CLDR 46.1.0 数据随源码和导出包携带许可,启动不下载规则。v1 支持普通文本、命名参数、select 和基数复数;不是完整 ICU MessageFormat,不自动处理金额、日期、时区、RTL 布局或业务字段翻译。

View File

@@ -0,0 +1,61 @@
{
"passed": true,
"mode": "localSource",
"durationSeconds": 11.57,
"checks": [
"rootGoRun",
"rootGoBuild",
"stableRegeneration",
"checkMainOwnership",
"contractChangePreview",
"logicSignatureCheckPersists",
"businessSourcePreserved",
"fixedConsumerBuild",
"nethttpSIGINT",
"nethttpSIGTERM",
"nativeSIGINT",
"nativeSIGTERM",
"listenerReleased",
"temporaryProcessesRemoved",
"nethttpGeneratedTransfers",
"nativeGeneratedTransfers",
"malformedMultipart400",
"goOwnedErrors",
"default404And405"
],
"sourceHashes": {
"cmd/go-omni/apigen/generate.go": "2305b168701c4564f83d680fc62e6f5a3589f4a3d7e78e66d82a6328bf0a6a89",
"cmd/go-omni/apigen/templates.go": "17b3c76390eb965a580f595ca1de0e98b584a13c729d5e2726baa8a94e24b977",
"cmd/go-omni/apigen/startup.go": "e3322fa3e2aff9f45d66427f44187535c7c0960edc0f5fdfd5d7b4943b349334",
"cmd/go-omni/apigen/managed_test.go": "e0b2b5aa6c4d6383590b467d57d7b4e00505ca35d6b6cde2475e4ad574041e94",
"cmd/go-omni/apigen/contractChanges.go": "aeb83990e908738faaa3cdfa20c3b8938023db05b6e55f2d24352c44144056a8",
"cmd/go-omni/apigen/logicCheck.go": "ca1af4f876a3a0db7b7b9ba9b82c1d6399fd89d29f667dad39cfd3de526eb1cb",
"cmd/go-omni/apigen/write.go": "7dcdac99760eaa16ec4f729998a2c29c0bf84eefbda229bd5c2d850dd4fc0646",
"cmd/go-omni/api.go": "5203a17c5f66977a9eba838d61cf5a7356de53d5f72a1196fd4f2046aa43ac85",
"config/config.go": "f8007526a9ebbbc781b2e27e37a49ec768deb568d56846a6ccc62b059a012fd0",
"httpx/transfer.go": "c9fe4e98c0e599d367eaf19ebecf367db914edfca9ad3a65527496d1dea80a3d",
"httpx/multipart.go": "b942ede7a810b268cd43b395c3bddcfaaacad92812bbb60e653466b8d86bc875",
"scripts/verifyManagedProject.py": "b0e4b1aea4f44d61470c35c41f971e0882ae36b0eb5df2be190400d62fc60a18",
"lifecycle/controller.go": "1fb9393df1908afed93d87a1bf3ecea8d79d78e437a656b56bb7f1e5f6e51d31",
"health/health.go": "41f07f27a7fdcfa7973c2c554a22b73129ebc5d44e945e70e054e1cff24ab866",
"config/endpoints.go": "9f5123f962d52b71e5b73d5942316170875e895129a94e8b669ce782969ef27d",
"httpx/response.go": "99e29724e4fa51d2c7ec1a52892c24ac5daf210a2ee547c5e69a175015298efd",
"app/app.go": "528bd1a9194389d469cd8ace2206366184626a84d626fc935914aa2d75088c71",
"app/transport.go": "88212d67d375e4c48c250a2e4c62fbff4e7873a67f91f2deb113a60634149f73",
"cmd/go-omni/scaffold/templates/api-loader.go.tmpl": "847ac407827808022dcf493823b58671e1ae50349b173a5e4500580e07c64150",
"cmd/go-omni/scaffold/templates/api-config.go.tmpl": "7638869e0bf47f33b3d0b6f9f64d1413a6beb0cdb986f6d65ec68bf477bfd2e7",
"cmd/go-omni/scaffold/templates/api-runtime.go.tmpl": "e8575c04b0923d924d96e4334731313076284fd068c4990715b7a07a2724f969",
"cmd/go-omni/scaffold/templates/api-close.go.tmpl": "3f22d272e92f3b64b62123b3d80ec1a6ce8834257d64752fd75facf12623902b",
"cmd/go-omni/scaffold/templates/api-databaseOptions.go.tmpl": "6e5395b4a787c77a6cabfd85f16049a39578d6ec751a9b78203f3a03baabdf28",
"cmd/go-omni/scaffold/templates/api-options.go.tmpl": "11fe34ce45e8c98f7b5c9c0a2c512eb0b3abf86f95b4b576e083bcb6f5d0f824",
"cmd/go-omni/scaffold/templates/api-context.go.tmpl": "6cf67d37ef64f388b23a98781c3ee3abb71a2e0b9e71eeb70f1e5492ff7e32b4",
"cmd/go-omni/scaffold/templates/api-load.go.tmpl": "c8089dfa50ea09de60a18f06463e83e8f0fa9fbb6795fd615e37822d7b2ab708",
"cmd/go-omni/apigen/testdata/managed/options.go": "30d48e4b5aab476c887ac53cc89b48b2b7e250c8cd25e55fecb49bb2a3589247",
"cmd/go-omni/apigen/testdata/managed/background.go": "fb357b5deefd5187f2df406be5189fc4d57da857bd55b474f4726bf065c77167",
"cmd/go-omni/apigen/testdata/managed/client.go": "cdd7d394ddad4bcdc10224890a884aa513ed2ffd8275ecdad8de9963dd10986a",
"cmd/go-omni/apigen/testdata/managed/phases_test.go": "94a5787218c0d92159b473d390197858241ede2cab591df0976e611ed279dcfe",
"cmd/go-omni/apigen/testdata/managed/shutdown_test.go": "79fbf8dd4508b8217af888a31aaf2f2a01c1fa3869b2e80420605af697c66319",
"cmd/go-omni/apigen/testdata/managed/consumer_test.go": "589e2c54d9ad7f64e88ac556329a52062a27b4e898deb9a97feff200787c32c1",
"cmd/go-omni/apigen/testdata/managed/operations.go": "44cea63e6023458c5818c9fdae223631cd1721f0841e671457398bfde8bc48f1"
}
}

View File

@@ -0,0 +1,194 @@
=== Go 1.27.1 full race including generated consumers and TypeScript ===
ok git.yuntuo.hk/k2safe/go-omni (cached)
ok git.yuntuo.hk/k2safe/go-omni/app (cached)
ok git.yuntuo.hk/k2safe/go-omni/audit (cached)
ok git.yuntuo.hk/k2safe/go-omni/auth (cached)
ok git.yuntuo.hk/k2safe/go-omni/cache (cached)
ok git.yuntuo.hk/k2safe/go-omni/cache/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 4.178s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 85.649s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 43.902s
ok git.yuntuo.hk/k2safe/go-omni/config (cached)
ok git.yuntuo.hk/k2safe/go-omni/contract 2.065s
ok git.yuntuo.hk/k2safe/go-omni/copyx (cached)
ok git.yuntuo.hk/k2safe/go-omni/cors (cached)
ok git.yuntuo.hk/k2safe/go-omni/database (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/gormx (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/migrate (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/mysql (cached)
ok git.yuntuo.hk/k2safe/go-omni/errors (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/basic [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility/ids [no test files]
ok git.yuntuo.hk/k2safe/go-omni/examples/configuration (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/copying (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/cors [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/developerTools [no test files]
ok git.yuntuo.hk/k2safe/go-omni/examples/httpClient (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/i18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/modules (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/platform (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/reference (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/reference/handler [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/model [no test files]
ok git.yuntuo.hk/k2safe/go-omni/examples/reference/repository (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/transactions [no test files]
ok git.yuntuo.hk/k2safe/go-omni/health (cached)
ok git.yuntuo.hk/k2safe/go-omni/httpc (cached)
ok git.yuntuo.hk/k2safe/go-omni/httpx (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n 3.128s
? git.yuntuo.hk/k2safe/go-omni/i18n/browser [no test files]
ok git.yuntuo.hk/k2safe/go-omni/i18n/errori18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/httpi18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/i18ntool (cached)
? git.yuntuo.hk/k2safe/go-omni/internal/configdiag [no test files]
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck (cached)
? git.yuntuo.hk/k2safe/go-omni/internal/storagefixture [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/testutil [no test files]
ok git.yuntuo.hk/k2safe/go-omni/lifecycle (cached)
ok git.yuntuo.hk/k2safe/go-omni/logx (cached)
ok git.yuntuo.hk/k2safe/go-omni/metrics (cached)
ok git.yuntuo.hk/k2safe/go-omni/middleware (cached)
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/openapi (cached)
ok git.yuntuo.hk/k2safe/go-omni/pagination (cached)
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
ok git.yuntuo.hk/k2safe/go-omni/queue/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/resilience (cached)
ok git.yuntuo.hk/k2safe/go-omni/response (cached)
? git.yuntuo.hk/k2safe/go-omni/scripts/corsBrowser [no test files]
ok git.yuntuo.hk/k2safe/go-omni/storage (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/local (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/oss (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 (cached)
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
ok git.yuntuo.hk/k2safe/go-omni/task (cached)
ok git.yuntuo.hk/k2safe/go-omni/telemetry (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 (cached)
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
ok git.yuntuo.hk/k2safe/go-omni/transport/native (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp (cached)
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
=== Go 1.22.12 full suite including generated consumers ===
ok git.yuntuo.hk/k2safe/go-omni (cached)
ok git.yuntuo.hk/k2safe/go-omni/app (cached)
ok git.yuntuo.hk/k2safe/go-omni/audit (cached)
ok git.yuntuo.hk/k2safe/go-omni/auth (cached)
ok git.yuntuo.hk/k2safe/go-omni/cache (cached)
ok git.yuntuo.hk/k2safe/go-omni/cache/redis (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/basic [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility/ids [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/cors [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/developerTools [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/handler [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/model [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/transactions [no test files]
? git.yuntuo.hk/k2safe/go-omni/i18n/browser [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/configdiag [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/storagefixture [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/testutil [no test files]
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
? git.yuntuo.hk/k2safe/go-omni/scripts/corsBrowser [no test files]
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 3.709s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 77.621s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 54.857s
ok git.yuntuo.hk/k2safe/go-omni/config (cached)
ok git.yuntuo.hk/k2safe/go-omni/contract 1.242s
ok git.yuntuo.hk/k2safe/go-omni/copyx (cached)
ok git.yuntuo.hk/k2safe/go-omni/cors (cached)
ok git.yuntuo.hk/k2safe/go-omni/database (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/gormx (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/migrate (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/mysql (cached)
ok git.yuntuo.hk/k2safe/go-omni/errors (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/configuration (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/copying (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/httpClient (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/i18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/modules (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/platform (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/reference (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/reference/repository (cached)
ok git.yuntuo.hk/k2safe/go-omni/health (cached)
ok git.yuntuo.hk/k2safe/go-omni/httpc (cached)
ok git.yuntuo.hk/k2safe/go-omni/httpx (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/errori18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/httpi18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/i18ntool (cached)
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck (cached)
ok git.yuntuo.hk/k2safe/go-omni/lifecycle (cached)
ok git.yuntuo.hk/k2safe/go-omni/logx (cached)
ok git.yuntuo.hk/k2safe/go-omni/metrics (cached)
ok git.yuntuo.hk/k2safe/go-omni/middleware (cached)
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/openapi (cached)
ok git.yuntuo.hk/k2safe/go-omni/pagination (cached)
ok git.yuntuo.hk/k2safe/go-omni/queue/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/resilience (cached)
ok git.yuntuo.hk/k2safe/go-omni/response (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/local (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/oss (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 (cached)
ok git.yuntuo.hk/k2safe/go-omni/task (cached)
ok git.yuntuo.hk/k2safe/go-omni/telemetry (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport/native (cached)
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp (cached)
=== go vet ./... ===
(no diagnostics)
=== go build ./... ===
(no diagnostics)
=== Node browser runtime tests ===
TAP version 13
# Subtest: detached resources, explicit overrides, text arguments and fallback
ok 1 - detached resources, explicit overrides, text arguments and fallback
---
duration_ms: 2.926334
type: 'test'
...
# Subtest: latest selection wins and failures preserve committed state
ok 2 - latest selection wins and failures preserve committed state
---
duration_ms: 0.386666
type: 'test'
...
# Subtest: bad packs cannot commit or change enabled languages/schemas
ok 3 - bad packs cannot commit or change enabled languages/schemas
---
duration_ms: 0.266708
type: 'test'
...
# Subtest: bounded fetching and validation before switching
ok 4 - bounded fetching and validation before switching
---
duration_ms: 12.806416
type: 'test'
...
1..4
# tests 4
# suites 0
# pass 4
# fail 0
# cancelled 0
# skipped 0
# todo 0
# duration_ms 62.584417
=== Local generated process acceptance ===
PASS generated root project: go run/build, regeneration, nethttp/native signals; temporary files removed

241
reports/i18nValidation.txt Normal file
View File

@@ -0,0 +1,241 @@
=== Go 1.27.1 full repository race ===
ok git.yuntuo.hk/k2safe/go-omni 2.110s
ok git.yuntuo.hk/k2safe/go-omni/app 3.749s
ok git.yuntuo.hk/k2safe/go-omni/audit (cached)
ok git.yuntuo.hk/k2safe/go-omni/auth 2.176s
ok git.yuntuo.hk/k2safe/go-omni/cache (cached)
ok git.yuntuo.hk/k2safe/go-omni/cache/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 4.648s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 29.880s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold (cached)
ok git.yuntuo.hk/k2safe/go-omni/config 2.829s
ok git.yuntuo.hk/k2safe/go-omni/contract (cached)
ok git.yuntuo.hk/k2safe/go-omni/copyx (cached)
ok git.yuntuo.hk/k2safe/go-omni/cors (cached)
ok git.yuntuo.hk/k2safe/go-omni/database 2.260s
ok git.yuntuo.hk/k2safe/go-omni/database/gormx (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/migrate (cached)
ok git.yuntuo.hk/k2safe/go-omni/database/mysql (cached)
ok git.yuntuo.hk/k2safe/go-omni/errors 3.366s
? git.yuntuo.hk/k2safe/go-omni/examples/basic [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility/ids [no test files]
ok git.yuntuo.hk/k2safe/go-omni/examples/configuration 3.039s
ok git.yuntuo.hk/k2safe/go-omni/examples/copying (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/cors [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/developerTools [no test files]
ok git.yuntuo.hk/k2safe/go-omni/examples/httpClient (cached)
ok git.yuntuo.hk/k2safe/go-omni/examples/i18n 3.686s
ok git.yuntuo.hk/k2safe/go-omni/examples/modules 4.007s
ok git.yuntuo.hk/k2safe/go-omni/examples/platform 4.383s
ok git.yuntuo.hk/k2safe/go-omni/examples/reference 4.158s
? git.yuntuo.hk/k2safe/go-omni/examples/reference/handler [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/model [no test files]
ok git.yuntuo.hk/k2safe/go-omni/examples/reference/repository (cached)
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/transactions [no test files]
ok git.yuntuo.hk/k2safe/go-omni/health 3.842s
ok git.yuntuo.hk/k2safe/go-omni/httpc (cached)
ok git.yuntuo.hk/k2safe/go-omni/httpx 3.850s
ok git.yuntuo.hk/k2safe/go-omni/i18n 3.384s
? git.yuntuo.hk/k2safe/go-omni/i18n/browser [no test files]
ok git.yuntuo.hk/k2safe/go-omni/i18n/errori18n 3.169s
ok git.yuntuo.hk/k2safe/go-omni/i18n/httpi18n 3.277s
ok git.yuntuo.hk/k2safe/go-omni/i18n/i18ntool 3.480s
? git.yuntuo.hk/k2safe/go-omni/internal/configdiag [no test files]
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck 3.467s
? git.yuntuo.hk/k2safe/go-omni/internal/storagefixture [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/testutil [no test files]
ok git.yuntuo.hk/k2safe/go-omni/lifecycle (cached)
ok git.yuntuo.hk/k2safe/go-omni/logx (cached)
ok git.yuntuo.hk/k2safe/go-omni/metrics 3.470s
ok git.yuntuo.hk/k2safe/go-omni/middleware 3.697s
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis 3.573s
ok git.yuntuo.hk/k2safe/go-omni/openapi 3.448s
ok git.yuntuo.hk/k2safe/go-omni/pagination (cached)
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
ok git.yuntuo.hk/k2safe/go-omni/queue/redis (cached)
ok git.yuntuo.hk/k2safe/go-omni/resilience (cached)
ok git.yuntuo.hk/k2safe/go-omni/response 3.564s
? git.yuntuo.hk/k2safe/go-omni/scripts/corsBrowser [no test files]
ok git.yuntuo.hk/k2safe/go-omni/storage (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/local (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/oss (cached)
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 (cached)
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
ok git.yuntuo.hk/k2safe/go-omni/task (cached)
ok git.yuntuo.hk/k2safe/go-omni/telemetry 2.867s
ok git.yuntuo.hk/k2safe/go-omni/transport 3.380s
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 (cached)
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
ok git.yuntuo.hk/k2safe/go-omni/transport/native 4.302s
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp 3.669s
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
=== Go 1.27.1 vet ===
(no diagnostics)
=== Go 1.27.1 build ===
(no diagnostics)
=== Generated consumers ===
=== RUN TestErrorInheritanceConsumer
--- PASS: TestErrorInheritanceConsumer (4.65s)
=== RUN TestErrorParamsConsumer
--- PASS: TestErrorParamsConsumer (3.93s)
=== RUN TestI18nGeneratedConsumer
--- PASS: TestI18nGeneratedConsumer (2.18s)
PASS
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 12.002s
=== Go 1.22 full repository: TWO KNOWN FAILURES ===
ok git.yuntuo.hk/k2safe/go-omni 0.601s
ok git.yuntuo.hk/k2safe/go-omni/app 3.748s
ok git.yuntuo.hk/k2safe/go-omni/audit 2.939s
ok git.yuntuo.hk/k2safe/go-omni/auth 0.770s
ok git.yuntuo.hk/k2safe/go-omni/cache 1.306s
ok git.yuntuo.hk/k2safe/go-omni/cache/redis 2.414s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 6.033s
? git.yuntuo.hk/k2safe/go-omni/examples/basic [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/compatibility/ids [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/cors [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/developerTools [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/handler [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/model [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/reference/service [no test files]
? git.yuntuo.hk/k2safe/go-omni/examples/transactions [no test files]
? git.yuntuo.hk/k2safe/go-omni/i18n/browser [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/configdiag [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/storagefixture [no test files]
? git.yuntuo.hk/k2safe/go-omni/internal/testutil [no test files]
? git.yuntuo.hk/k2safe/go-omni/queue [no test files]
? git.yuntuo.hk/k2safe/go-omni/scripts/corsBrowser [no test files]
? git.yuntuo.hk/k2safe/go-omni/storage/storagetest [no test files]
? git.yuntuo.hk/k2safe/go-omni/transport/internal/routing [no test files]
? git.yuntuo.hk/k2safe/go-omni/transport/transporttest [no test files]
? git.yuntuo.hk/k2safe/go-omni/validate [no test files]
--- FAIL: TestWorkspaceSharedGoCatalog (0.24s)
workspaceCatalog_test.go:36: workspace catalog example.com/catalogs/internal/apierrors.Catalog: build failed (exit status 1); check module dependencies and func() errors.Catalog signature
FAIL
FAIL git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 33.292s
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/scaffold 4.926s
ok git.yuntuo.hk/k2safe/go-omni/config 4.921s
--- FAIL: TestBodyPolicyPropagatesOuterLimit (0.00s)
policy_test.go:32: limit 1: expected 413, got INVALID_REQUEST: request parameters are invalid: unterminated object
FAIL
FAIL git.yuntuo.hk/k2safe/go-omni/contract 5.102s
ok git.yuntuo.hk/k2safe/go-omni/copyx 4.564s
ok git.yuntuo.hk/k2safe/go-omni/cors 5.632s
ok git.yuntuo.hk/k2safe/go-omni/database 5.107s
ok git.yuntuo.hk/k2safe/go-omni/database/gormx 5.540s
ok git.yuntuo.hk/k2safe/go-omni/database/migrate 4.580s
ok git.yuntuo.hk/k2safe/go-omni/database/mysql 2.955s
ok git.yuntuo.hk/k2safe/go-omni/errors 3.089s
ok git.yuntuo.hk/k2safe/go-omni/examples/configuration 3.126s
ok git.yuntuo.hk/k2safe/go-omni/examples/copying 3.375s
ok git.yuntuo.hk/k2safe/go-omni/examples/httpClient 3.375s
ok git.yuntuo.hk/k2safe/go-omni/examples/i18n 4.191s
ok git.yuntuo.hk/k2safe/go-omni/examples/modules 3.972s
ok git.yuntuo.hk/k2safe/go-omni/examples/platform 3.265s
ok git.yuntuo.hk/k2safe/go-omni/examples/reference 3.128s
ok git.yuntuo.hk/k2safe/go-omni/examples/reference/repository 3.181s
ok git.yuntuo.hk/k2safe/go-omni/health 3.212s
ok git.yuntuo.hk/k2safe/go-omni/httpc 3.472s
ok git.yuntuo.hk/k2safe/go-omni/httpx 3.782s
ok git.yuntuo.hk/k2safe/go-omni/i18n 3.603s
ok git.yuntuo.hk/k2safe/go-omni/i18n/errori18n 3.390s
ok git.yuntuo.hk/k2safe/go-omni/i18n/httpi18n 3.279s
ok git.yuntuo.hk/k2safe/go-omni/i18n/i18ntool 2.712s
ok git.yuntuo.hk/k2safe/go-omni/internal/perfcheck 2.535s
ok git.yuntuo.hk/k2safe/go-omni/lifecycle 2.721s
ok git.yuntuo.hk/k2safe/go-omni/logx 2.725s
ok git.yuntuo.hk/k2safe/go-omni/metrics 2.734s
ok git.yuntuo.hk/k2safe/go-omni/middleware 2.605s
ok git.yuntuo.hk/k2safe/go-omni/middleware/redis 2.344s
ok git.yuntuo.hk/k2safe/go-omni/openapi 1.869s
ok git.yuntuo.hk/k2safe/go-omni/pagination 2.125s
ok git.yuntuo.hk/k2safe/go-omni/queue/redis 2.273s
ok git.yuntuo.hk/k2safe/go-omni/resilience 2.439s
ok git.yuntuo.hk/k2safe/go-omni/response 2.687s
ok git.yuntuo.hk/k2safe/go-omni/storage 3.068s
ok git.yuntuo.hk/k2safe/go-omni/storage/local 3.291s
ok git.yuntuo.hk/k2safe/go-omni/storage/oss 3.284s
ok git.yuntuo.hk/k2safe/go-omni/storage/s3 0.837s
ok git.yuntuo.hk/k2safe/go-omni/task 1.183s
ok git.yuntuo.hk/k2safe/go-omni/telemetry 1.391s
ok git.yuntuo.hk/k2safe/go-omni/transport 0.320s
ok git.yuntuo.hk/k2safe/go-omni/transport/http2 12.096s
ok git.yuntuo.hk/k2safe/go-omni/transport/native 2.570s
ok git.yuntuo.hk/k2safe/go-omni/transport/nethttp 1.642s
FAIL
=== Go 1.22 feature and integration packages ===
? git.yuntuo.hk/k2safe/go-omni/i18n/browser [no test files]
ok git.yuntuo.hk/k2safe/go-omni/i18n 0.894s
ok git.yuntuo.hk/k2safe/go-omni/i18n/errori18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/httpi18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/i18ntool (cached)
ok git.yuntuo.hk/k2safe/go-omni/app (cached)
ok git.yuntuo.hk/k2safe/go-omni/errors (cached)
ok git.yuntuo.hk/k2safe/go-omni/response (cached)
ok git.yuntuo.hk/k2safe/go-omni/httpx (cached)
ok git.yuntuo.hk/k2safe/go-omni/config (cached)
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 3.552s
ok git.yuntuo.hk/k2safe/go-omni/examples/i18n (cached)
=== Go 1.22 i18n generated consumer ===
=== RUN TestI18nTranslationMetadataAndVersionBoundary
--- PASS: TestI18nTranslationMetadataAndVersionBoundary (0.01s)
=== RUN TestI18nGeneratedConsumer
--- PASS: TestI18nGeneratedConsumer (2.43s)
PASS
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni/apigen 2.866s
=== CLDR / Go-browser / TypeScript conformance ===
=== RUN TestPinnedCLDRSamples
plural_test.go:52: validated 5777 upstream cardinal samples
--- PASS: TestPinnedCLDRSamples (0.00s)
=== RUN TestSourceLocaleCanBeFallbackOnly
=== RUN TestSourceLocaleCanBeFallbackOnly/fr
=== RUN TestSourceLocaleCanBeFallbackOnly/cmn
=== RUN TestSourceLocaleCanBeFallbackOnly/x-example
--- PASS: TestSourceLocaleCanBeFallbackOnly (0.10s)
--- PASS: TestSourceLocaleCanBeFallbackOnly/fr (0.04s)
--- PASS: TestSourceLocaleCanBeFallbackOnly/cmn (0.03s)
--- PASS: TestSourceLocaleCanBeFallbackOnly/x-example (0.03s)
=== RUN TestBrowserConformance
--- PASS: TestBrowserConformance (0.16s)
=== RUN TestTypeScriptConsumer
--- PASS: TestTypeScriptConsumer (0.55s)
PASS
ok git.yuntuo.hk/k2safe/go-omni/i18n 1.325s
=== Bounded JSON fuzz ===
fuzz: elapsed: 0s, gathering baseline coverage: 0/1 completed
fuzz: elapsed: 0s, gathering baseline coverage: 1/1 completed, now fuzzing with 12 workers
fuzz: elapsed: 3s, execs: 264525 (88141/sec), new interesting: 179 (total: 180)
fuzz: elapsed: 6s, execs: 264525 (0/sec), new interesting: 179 (total: 180)
fuzz: elapsed: 9s, execs: 413057 (49511/sec), new interesting: 186 (total: 187)
fuzz: elapsed: 11s, execs: 419121 (2995/sec), new interesting: 192 (total: 193)
PASS
ok git.yuntuo.hk/k2safe/go-omni/i18n 11.341s
=== Development-machine benchmark ===
goos: darwin
goarch: arm64
pkg: git.yuntuo.hk/k2safe/go-omni/i18n
cpu: Apple M2 Max
BenchmarkRender-12 623985 3753 ns/op 1040 B/op 27 allocs/op
PASS
ok git.yuntuo.hk/k2safe/go-omni/i18n 2.745s
=== Final changed-package race including TypeScript ===
ok git.yuntuo.hk/k2safe/go-omni/i18n 2.518s
? git.yuntuo.hk/k2safe/go-omni/i18n/browser [no test files]
ok git.yuntuo.hk/k2safe/go-omni/i18n/errori18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/httpi18n (cached)
ok git.yuntuo.hk/k2safe/go-omni/i18n/i18ntool (cached)
ok git.yuntuo.hk/k2safe/go-omni/cmd/go-omni 4.929s
ok git.yuntuo.hk/k2safe/go-omni/examples/i18n (cached)