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]

Reply via email to