codeconsole opened a new pull request, #16180: URL: https://github.com/apache/grails-core/pull/16180
Adds the end-to-end module #16176 asks for: an application that resolves messages from each way a bundle reaches the message source, so a missing resource hint can actually be falsified. **Stacked on #16179** — the branch contains that fix, because without it the JVM check cannot pass. Review that one first; this diff reduces to the `end-to-end/` module once it merges. ## What it checks | Bundle | Base name | Why | |---|---|---| | the application's own | `messages` | The case Spring Boot's own hints already cover, as a control. | | the plugin's | `native-messages` | Namespaced, so Boot's two hardcoded `messages*` patterns never reach it. The plugin name is multi-word, so it also covers the descriptor's hyphenated spelling being matched against the plugin's camel-case one. | | one the application configured | `config.i18n.custom` | Outside `grails-app/i18n`, dotted, so it proves the base name is converted to `config/i18n/custom` before use. | Each is resolved in English and in a locale variant. An unknown code is resolved too, under `use-code-as-default-message`, because base names alone would not prove `MessageSourceProperties` was bound — the whole object binds at once or not at all. ## Running it The JVM half runs in `check` and needs nothing special: ```bash cd end-to-end ./gradlew :native-i18n:check ``` The native half is opt-in, because it needs a GraalVM toolchain and minutes of CPU: ```bash ./gradlew :native-i18n:check -PnativeTests ``` The README documents the two things it needs that nothing else in this repository does — a GraalVM JDK exported before anything is published, and invokedynamic on both the framework and the application — and what each failure looks like when forgotten. ## Limitations - **The native half has not been executed yet.** The wiring is in place and the JVM half passes, but no GraalVM image has been built from this module, so the hint registration is still unproven in an image. That is the remaining work for #16176 and the reason this is a draft. - **The JVM half cannot falsify a resource hint.** On a JVM every bundle on the classpath is readable whether it was registered or not. Its value is as a fixture guard and, as it turned out, at catching lifecycle bugs — it is what found #16179. - **No native job in CI.** A full `nativeCompile` is minutes of CPU and needs a toolchain no other job uses, so this stays a local opt-in until someone decides where it belongs. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
