The GitHub Actions job "CI - Groovy Joint Validation Build" on 
grails-core.git/grails8-groovy5-sb4 has succeeded.
Run started by GitHub user jamesfredley (triggered by jamesfredley).

Head commit for run:
1c723edbb53db880e9d5ac92613c77afcdd3dce5 / James Fredley 
<[email protected]>
Disable integrationTest for 5 test apps - Groovy 5 indy=false regression 
(workaround, still broken)

The merge of 8.0.x brought in commit 50a42e49d83 which removed the
boot4-disabled-integration-test-config.gradle apply line from app1, app3,
exploded, mongodb/test-data-service, and plugins/exploded build.gradle.
Base 8.0.x removed it because Spring Security 8.0.0-SNAPSHOT addressed the
Boot 4 blocker on Groovy 4. On the Groovy 5 PR branch this re-enables
integration tests that fail with a separate, latent Groovy 5 indy=false
regression that the PR has not fixed.

Root cause (Groovy 5 indy=false specific):
Controller action methods that declare parameters (def echo(String person),
@RequestParameter annotated params, command objects) throw at runtime:

    groovy.lang.MissingPropertyException: No such property: <param> for class: 
<Controller>
        at grails.artefact.gsp.TagLibraryInvoker.propertyMissing
        at <Controller>.propertyMissing(<Controller>.groovy)
        at <Controller>.<action>(<Controller>.groovy)

The parameter resolves to a propertyMissing lookup on the controller (via the
TagLibraryInvoker trait) instead of the local parameter. The trigger is
ControllerActionTransformer.wrapMethodBodyWithExceptionHandling wrapping the
original method body in a try/catch; under -PgrailsIndy=false dispatch the
parameter scope is lost. Functional Tests (Java 21, indy=true) PASS for the
same projects, confirming the regression is indy=false specific.

Affected tests (all in grails-test-examples-app1):
- ForwardingSpec > forwarding to a view
- InterceptorFunctionalSpec > Test that after interceptor can 
redirect/forward/chain
- AdvancedDataBindingSpec > test @RequestParameter maps different parameter 
names
- AdvancedDataBindingSpec > test valid type conversion
- ChainingToNamespacedControllersFunctionalSpec > Test chaining to a namespaced 
controller
- CommandObjectSpec > should display the correct title on the home page

This is a WORKAROUND, not a fix. The integration tests in these 5 test apps
remain broken on Groovy 5 with indy=false. Restoring the
boot4-disabled-integration-test-config.gradle apply line matches the PR's
pre-merge passing state. Proper fix needs either an upstream Apache Groovy
fix for the indy=false callsite dispatch, or a ControllerActionTransformer
redesign that preserves parameter scope after the exception-handling wrap.

The boot4-disabled-integration-test-config.gradle file's documentation has
been expanded to explicitly call out the Groovy 5 indy=false issue as a
known blocker so future maintainers do not silently re-enable these tests.

Assisted-by: claude-code:claude-opus-4-7

Report URL: https://github.com/apache/grails-core/actions/runs/25192627970

With regards,
GitHub Actions via GitBox

Reply via email to