fix: declare api-version 621, and pin the recall id behaviour in tests - #8
Conversation
…dcast Strengthens the existing verify(times(2)) into an ArgumentCaptor check, so the test actually pins the behaviour #5 introduced (id generation delegated to the framework) rather than only counting insert calls. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HzTkgBjRdaTcLrbvkoaFkp
This module's bytecode references DataOperator.insert / update(T) with the BaseDataEntity descriptors introduced in UltiTools-API 6.2.1, but plugin.yml still declared 620. PluginManager.isUltiToolsVersionCompatible only reads api-version -- the pom pin is provided scope and never reaches runtime -- so a server on framework 6.2.0 admits this JAR and then throws NoSuchMethodError on the first data access. 621 is measured, not estimated: a per-symbol comparison of the built JAR against 6.2.0 and 6.2.1 reports missing symbols for the former and none for the latter. No release is cut for this on its own; the corrected floor rides out with this module's next real release, which is MAJOR under the module versioning rules. Refs UltiKits/UltiTools-Reborn#284 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HzTkgBjRdaTcLrbvkoaFkp
|
Warning Review limit reached
Next review available in: 54 minutes Limit details: You’ve used all 1 included review currently available under your plan. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe plugin API version changes from ChangesPlugin configuration and recall validation
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This change updates the declared API floor and strengthens recall behavior tests; no actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Raising plugin.yml's api-version to 621 makes the README actively harmful: it tells a server owner to install UltiTools-API 6.2.0, which the framework compatibility check will now refuse. The documented minimum has to move with the manifest floor. Only statements of the runtime requirement are touched. Sentences that record which API generation this module migrated to are history and stay at 6.2.0. Refs UltiKits/UltiTools-Reborn#284 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HzTkgBjRdaTcLrbvkoaFkp
两件事,都很小,都属于本仓库。
1 ·
api-version620 → 621UltiMail-1.1.0.jar的字节码引用了DataOperator.getById/insert/update(T)在 UltiTools-API 6.2.1 才有的BaseDataEntity描述符(三个符号,是受影响模块里最多的),但plugin.yml声明的地板还是620。PluginManager.isUltiToolsVersionCompatible只读api-version——pom.xml的 pin 是providedscope,不进 JAR,运行时框架看不到它。所以装了框架 6.2.0 的服务器会放行这个 JAR,然后在第一次读写邮件时NoSuchMethodError。Java 惰性解析,从不发邮件的服主今天还看不出来。621是算出来的:产物逐符号比对 6.2.0 缺 3 个、比对 6.2.1 缺 0 个。根因与全量实测见 UltiKits/UltiTools-Reborn#284。不为此单独发版,修正后的地板随下次真正发布带出,那一版按模块版本号规范(
api-version抬高即 MAJOR)是 MAJOR。2 · 把 #5 的行为真正钉进测试
RecallCommandTest里原来只断言verify(mailOp, times(2)).insert(any())—— 它只数了调用次数,#5「把 id 生成交还框架」这个行为本身没有任何测试守着。改成ArgumentCaptor之后,捕获的实体会被断言getId()为 null、收件人 UUID 正确。这段是 #5 那次遗留在工作树里、没跟着合进去的补强。
验收
api-version: 621,pom.xml未改动RecallCommandTest43 个用例本地全绿🤖 Generated with Claude Code
https://claude.ai/code/session_01HzTkgBjRdaTcLrbvkoaFkp
Summary by CodeRabbit
Compatibility
Tests