You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@grails.apache.org by "codeconsole (via GitHub)" <gi...@apache.org> on 2026/06/02 20:37:45 UTC
[PR] Make SiteMesh 3 the default GSP layout [grails-core]
codeconsole opened a new pull request, #15713:
URL: https://github.com/apache/grails-core/pull/15713
Makes SiteMesh 3 the default GSP layout in generated applications, mutually exclusive with the legacy SiteMesh 2 `grails-layout` feature.
Introduces a `GspLayout` one-of feature group (enforced by `OneOfFeatureValidator`):
- **`GspLayout`** β abstract one-of parent (`Category.VIEW`, WEB/WEB_PLUGIN)
- **`Sitemesh3`** β default member; auto-applied unless another `GspLayout` is selected; adds `grails-sitemesh3`
- **`GrailsLayout`** β opt-in member; adds `grails-layout` (SiteMesh 2)
`GrailsGsp` is intentionally **not** modified: its existing `if (!isFeaturePresent(Sitemesh3))` guard already skips `grails-layout` when SiteMesh 3 applies, so SiteMesh 2 remains available via `GrailsLayout`. Selecting both `sitemesh3` and `grails-layout` now fails fast.
### Depends on #15710
Split out from #15710 per review feedback ("making this the default & updating to sitemesh 3 should be separate PRs"). This branch is stacked on #15710, so **until #15710 merges this PR's diff also shows the enable-SiteMesh-3 commits**; it will reduce to just the make-default change once #15710 lands. Please merge #15710 first.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "matrei (via GitHub)" <gi...@apache.org>.
matrei commented on code in PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#discussion_r3380842201
##########
.github/workflows/gradle.yml:
##########
@@ -24,6 +24,11 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+# Exercise SiteMesh 3 by default in the test apps. The example/suite builds read this
+# flag to choose grails-sitemesh3 over the legacy grails-layout; unset it (or set it to
+# anything other than 'true') to fall back to SiteMesh 2.
+env:
+ SITEMESH3_TESTING_ENABLED: 'true'
Review Comment:
We should turn this around to default to SiteMesh 3. Otherwise we will run SiteMesh 2 by default locally.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4637534760
## π¨ TestLens detected 2 failed tests π¨
Here is what you can do:
1) Inspect the test failures carefully.
2) If you are convinced that some of the tests are flaky, you can mute them below.
3) Finally, trigger a rerun by checking the rerun checkbox.
### Test Summary
| Check | Project/Task | Test | Runs |
|---|---|---|---|
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27053374628/job/79852928040?pr=15713) | :grails-test-examples-database-cleanup:integrationTest | ClassLevelCleanupSpec > test 1 - insert data and verify it was persisted | β |
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27053374628/job/79852928040?pr=15713) | :grails-test-examples-database-cleanup:integrationTest | MethodLevelCleanupSpec > test 1 - insert data with \@DatabaseCleanup and explicit type on method | β |
π·οΈ Commit: 920c12c9019d879a11f6f42e2066ea9aec5cf72e
βΆοΈ Tests: 13955 executed
π‘ Checks: 23/38 completed
### Test Failures
<details>
<summary><strong>ClassLevelCleanupSpec > test 1 - insert data and verify it was persisted</strong> (:grails-test-examples-database-cleanup:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/27053374628/job/79852928040?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@79ca51cb testClass = dbcleanup.ClassLevelCleanupSpec, locations = [], classes = [dbcleanup.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true", "server.port=0"], contextCustomizers = [org.spockframework.spring.mock.SpockContextCustomizer@0, org.springframework.boot.test.context.PropertyMappingContextCustomizer@0, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3a7e365, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@64942607, org.springframework.boot.web.server.context.SpringBootTestRandomPortContextCustomizer@158ae284, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.
SpringBootTestAnnotation@d24938c7], resourceBasePath = "src/main/webapp", contextLoader = grails.boot.test.GrailsApplicationContextLoader, parent = null]
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.lambda$loadContext$0(DefaultCacheAwareContextLoaderDelegate.java:195)
at org.springframework.test.context.cache.DefaultContextCache.put(DefaultContextCache.java:214)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:160)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:128)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:156)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:111)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.spockframework.spring.SpringTestContextManager.prepareTestInstance(SpringTestContextManager.java:56)
at org.spockframework.spring.SpringInterceptor.interceptInitializerMethod(SpringInterceptor.java:46)
at org.spockframework.runtime.extension.AbstractMethodInterceptor.intercept(AbstractMethodInterceptor.java:24)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'jspViewResolver' is expected to be of type 'org.springframework.context.ApplicationListener' but was actually of type 'org.grails.plugins.sitemesh3.GrailsSiteMeshViewResolver'
at org.springframework.beans.factory.support.AbstractBeanFactory.adaptBeanInstance(AbstractBeanFactory.java:418)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:399)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:266)
at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:222)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:140)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:448)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:381)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1016)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
at grails.boot.GrailsApp.run(GrailsApp.groovy:100)
at grails.boot.GrailsApp.run(GrailsApp.groovy:394)
at grails.boot.GrailsApp.run(GrailsApp.groovy:383)
at dbcleanup.Application.main(Application.groovy:27)
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:281)
at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$1(SpringBootContextLoader.java:148)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.lambda$runMain$0(SpringBootContextLoader.java:593)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1465)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:600)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.runMain(SpringBootContextLoader.java:592)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:143)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:114)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:247)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.lambda$loadContext$0(DefaultCacheAwareContextLoaderDelegate.java:167)
... 13 more
```
</details>
<details>
<summary><strong>MethodLevelCleanupSpec > test 1 - insert data with @DatabaseCleanup and explicit type on method</strong> (:grails-test-examples-database-cleanup:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/27053374628/job/79852928040?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
java.lang.IllegalStateException: ApplicationContext failure threshold (1) exceeded: skipping repeated attempt to load context for [WebMergedContextConfiguration@686ae6b3 testClass = dbcleanup.MethodLevelCleanupSpec, locations = [], classes = [dbcleanup.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true", "server.port=0"], contextCustomizers = [org.spockframework.spring.mock.SpockContextCustomizer@0, org.springframework.boot.test.context.PropertyMappingContextCustomizer@0, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3a7e365, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@64942607, org.springframework.boot.web.server.context.SpringBootTestRandomPortContextCustomizer@158ae284, org.springframework.test.context.support.DynamicPropertie
sContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@d24938c7], resourceBasePath = "src/main/webapp", contextLoader = grails.boot.test.GrailsApplicationContextLoader, parent = null]
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:157)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:128)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:156)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:111)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.spockframework.spring.SpringTestContextManager.prepareTestInstance(SpringTestContextManager.java:56)
at org.spockframework.spring.SpringInterceptor.interceptInitializerMethod(SpringInterceptor.java:46)
at org.spockframework.runtime.extension.AbstractMethodInterceptor.intercept(AbstractMethodInterceptor.java:24)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:101)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
```
</details>
### Muted Tests
> [!NOTE]
> Checks are currently running using the configuration below.
Select tests to mute in this pull request:
π² ClassLevelCleanupSpec > test 1 - insert data and verify it was persisted <!-- uniqueId=[engine:spock]/[spec:dbcleanup.ClassLevelCleanupSpec]/[feature:$spock_feature_0_0] -->
π² MethodLevelCleanupSpec > test 1 - insert data with \@DatabaseCleanup and explicit type on method <!-- uniqueId=[engine:spock]/[spec:dbcleanup.MethodLevelCleanupSpec]/[feature:$spock_feature_0_0] -->
Reuse successful test results:
π² β»οΈ Only rerun the tests that failed or were muted before
Click the checkbox to trigger a rerun:
π² **Rerun jobs**
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] 8.x Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "jamesfredley (via GitHub)" <gi...@apache.org>.
jamesfredley commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4732882027
I re-verified my earlier SM2 parity list against the current PR head and addressed the outstanding CI item. Most items have been resolved by the commits pushed since my last review; status below.
## SM2 parity list - current status
| Item | Status | Notes |
| --- | --- | --- |
| `g:applyLayout` attribute parity | β
Addressed | `RenderSitemeshTagLib` now handles `name`, `template`/`view`, `url`, `action`+`controller`, `params`, `model`, `contentType`, and `parse` (commit "Support the full applyLayout attribute surface under SiteMesh 3"). |
| Default layout config + implicit `application` fallback | β
Addressed | `Sitemesh3GrailsPlugin` reads `grails.sitemesh.default.layout` then falls back to `grails.views.layout.default`; `Sitemesh3LayoutFinder.resolveDefaultDecorator()` falls back to the implicit `application` layout when none is configured (commit "Match SiteMesh 2's default layout config and application fallback"). |
| `<title>` stripping robustness | β
Addressed | `Sitemesh3CapturedPage.indexOfTitleOpenTag()` now requires the char after `<title` to be `>` or whitespace, so `<titlebar>`/`<title-x>` are no longer mis-sliced (commit "Don't mis-slice head content around title-prefixed elements"). |
| Test examples default path (Hibernate 7) | β
Addressed | The hibernate7 examples now use the `SITEMESH2_TESTING_ENABLED` toggle and default to SM3 when unset, consistent with the rest of the examples. |
| SM2-only examples without SM3 coverage | β
Addressed | `scaffolding` and `jetty` now use the `SITEMESH2_TESTING_ENABLED` toggle (default SM3) rather than being hardcoded to `grails-layout`. |
| `grails-gsp-spring-boot` publication | β
Addressed | Now listed in `gradle/publish-root-config.gradle` alongside `grails-sitemesh3`. |
| Upstream auto-config suppression guard | β οΈ Mechanism replaced | The disabled `NoopSitemeshFilter` workaround was dropped. Suppression is now done in `Sitemesh3AutoConfiguration` via `@AutoConfigureBefore(SiteMeshViewResolverAutoConfiguration)` + `@ConditionalOnMissingBean(SiteMeshViewResolverBeanPostProcessor)`, covered by `GrailsSiteMeshViewResolverBeanPostProcessorSpec`. There is still no dedicated test asserting the upstream *filter* auto-config stays suppressed, but the original fragile bean is gone. |
| `grails.views.layout.enable.nongsp` | β Not addressed | `Sitemesh3LayoutFinder` still resolves only through the GSP locator; the SM2 `enableNonGspViews` / non-GSP (JSP) layout flag has no SM3 equivalent. Low priority - can be a follow-up if non-GSP layouts need to be supported under SM3. |
| CI coverage for SM2 lane | β
Addressed here | See below. |
## SM2 CI lane
Per @jdaugherty's suggestion (a separate workflow to run the SiteMesh 2 work, since legacy apps may still use it and it isn't exercised by default), I added `.github/workflows/sitemesh2.yml`. It sets `SITEMESH2_TESTING_ENABLED=true` - which flips the starter, the uber unit suite and the functional test examples back onto `:grails-layout` - and runs the core (`-PonlyCoreTests`) and functional (`-PonlyFunctionalTests`) lanes against it. `--rerun-tasks` ensures the tests execute against the grails-layout classpath rather than reusing SM3-cached outputs.
Triggers: `workflow_dispatch`, weekly `schedule`, and `push`/`pull_request` scoped to the GSP / test-suite / test-example / dependency paths where SM2-vs-SM3 behavior lives.
One caveat worth noting: GitHub only runs `schedule` and `workflow_dispatch` from the repository default branch, so the weekly/manual lane will not fire from an 8.x branch until 8.x is the default (PR and push coverage is unaffected). Remaining open items are `grails.views.layout.enable.nongsp` and an explicit upstream-filter-suppression guard test, both of which can be deferred as follow-ups.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4667738901
## β
All tests passed β
π·οΈ Commit: db817ebd2dde7cf2fde3de7ef5becfb346263e84
βΆοΈ Tests: 41010 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4685030798
## β
All tests passed β
π·οΈ Commit: 536da4d477c47126c328a9eca644fbf783d22115
βΆοΈ Tests: 20505 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "matrei (via GitHub)" <gi...@apache.org>.
matrei commented on code in PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#discussion_r3355528925
##########
grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/view/GspLayoutSpec.groovy:
##########
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.grails.forge.feature.view
+
+import org.grails.forge.ApplicationContextSpec
+import org.grails.forge.BuildBuilder
+import org.grails.forge.application.ApplicationType
+import spock.lang.Unroll
+
+class GspLayoutSpec extends ApplicationContextSpec {
+
+ @Unroll
+ void "web #applicationType apps use SiteMesh 3 (grails-sitemesh3) by default"() {
+ when:
+ final String build = new BuildBuilder(beanContext)
+ .features(["gsp"])
Review Comment:
Can we align on using single quotes for strings (here and below)?
##########
grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/view/GspLayoutSpec.groovy:
##########
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.grails.forge.feature.view
+
+import org.grails.forge.ApplicationContextSpec
+import org.grails.forge.BuildBuilder
+import org.grails.forge.application.ApplicationType
+import spock.lang.Unroll
+
+class GspLayoutSpec extends ApplicationContextSpec {
+
+ @Unroll
+ void "web #applicationType apps use SiteMesh 3 (grails-sitemesh3) by default"() {
+ when:
+ final String build = new BuildBuilder(beanContext)
+ .features(["gsp"])
+ .applicationType(applicationType)
+ .render()
+
+ then:
+ build.contains('implementation "org.apache.grails:grails-sitemesh3"')
+ !build.contains('implementation "org.apache.grails:grails-layout"')
+
+ and: "a SNAPSHOT build exposes the SiteMesh 3 snapshot repo so org.sitemesh:*-SNAPSHOT resolves"
Review Comment:
These assertions will be short-lived
##########
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/sitemesh3/Sitemesh3.java:
##########
@@ -38,12 +44,18 @@ public String getName() {
@Override
public String getTitle() {
- return "Sitemesh 3";
+ return "SiteMesh 3";
Review Comment:
Should this not align with the SiteMesh 2 title: "GSP SiteMesh 3 Layouts"?
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4665960589
## β
All tests passed β
π·οΈ Commit: 692ee12d9fef7ce308a2bd5a9c2efc08cc99f328
βΆοΈ Tests: 41414 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "jamesfredley (via GitHub)" <gi...@apache.org>.
jamesfredley commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4623123693
I wish github didn't scroll on tables like that in comments, but there are a number of key features that will need to be added to the sitemesh 3 plugin to match sitemesh 2's historical feature set. When the tests are all run against sitemesh 3 it will surface most of these, but the comment above should be close to comprehensive.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4640397761
## π¨ TestLens detected 1 failed test π¨
Here is what you can do:
1) Inspect the test failures carefully.
2) If you are convinced that some of the tests are flaky, you can mute them below.
3) Finally, trigger a rerun by checking the rerun checkbox.
### Test Summary
| Check | Project/Task | Test | Runs |
|---|---|---|---|
| [CI / Functional Tests \(Java 25, indy\=false\)](https://github.com/apache/grails-core/actions/runs/27073724852/job/79907343098?pr=15713) | :grails-test-examples-app1:integrationTest | LayoutWithTemplateSpec > Test that a layout is not applied to a template rendered by a controller by default | β |
π·οΈ Commit: 6178aeb3f9d73b0c8f2eeebb9289915f0c521c54
βΆοΈ Tests: 20633 executed
π‘ Checks: 19/38 completed
### Test Failures
<details>
<summary><strong>LayoutWithTemplateSpec > Test that a layout is not applied to a template rendered by a controller by default</strong> (:grails-test-examples-app1:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/27073724852/job/79907343098?pr=15713">CI / Functional Tests (Java 25, indy=false)</a>)</summary>
```
Condition failed with Exception:
to(PartialPage)
| |
| class functionaltests.pages.PartialPage
geb.waiting.WaitTimeoutException: condition did not pass in 10 seconds (failed with exception)
at geb.waiting.Wait.waitFor(Wait.groovy:128)
at geb.waiting.PotentiallyWaitingExecutor.execute(PotentiallyWaitingExecutor.groovy:31)
at geb.Page.verifyThisPageAtOnly(Page.groovy:424)
at geb.Page.getAtVerificationResult(Page.groovy:217)
at geb.Page.verifyAt(Page.groovy:188)
at geb.Browser.doAt(Browser.groovy:1208)
at geb.Browser.at(Browser.groovy:410)
at geb.Browser.to(Browser.groovy:566)
at geb.Browser.to(Browser.groovy:543)
at geb.Browser.to(Browser.groovy:532)
at grails.plugin.geb.support.delegate.BrowserDelegate$Trait$Helper.to(BrowserDelegate.groovy:160)
at functionaltests.layout.LayoutWithTemplateSpec.Test that a layout is not applied to a template rendered by a controller by default(LayoutWithTemplateSpec.groovy:30)
Caused by: Assertion failed:
title == pageTitle
| | |
| | 'Welcome to My Partial'
| false
'Welcome to Grails'
at functionaltests.pages.PartialPage._clinit__closure1(PartialPage.groovy:28)
at geb.waiting.Wait.waitFor(Wait.groovy:117)
... 11 more
at functionaltests.layout.LayoutWithTemplateSpec.Test that a layout is not applied to a template rendered by a controller by default(LayoutWithTemplateSpec.groovy:30)
Caused by: geb.waiting.WaitTimeoutException: condition did not pass in 10 seconds (failed with exception)
at geb.waiting.Wait.waitFor(Wait.groovy:128)
at geb.waiting.PotentiallyWaitingExecutor.execute(PotentiallyWaitingExecutor.groovy:31)
at geb.Page.verifyThisPageAtOnly(Page.groovy:424)
at geb.Page.getAtVerificationResult(Page.groovy:217)
at geb.Page.verifyAt(Page.groovy:188)
at geb.Browser.doAt(Browser.groovy:1208)
at geb.Browser.at(Browser.groovy:410)
at geb.Browser.to(Browser.groovy:566)
at geb.Browser.to(Browser.groovy:543)
at geb.Browser.to(Browser.groovy:532)
at grails.plugin.geb.support.delegate.BrowserDelegate$Trait$Helper.to(BrowserDelegate.groovy:160)
... 1 more
Caused by: Assertion failed:
title == pageTitle
| | |
| | 'Welcome to My Partial'
| false
'Welcome to Grails'
at functionaltests.pages.PartialPage._clinit__closure1(PartialPage.groovy:28)
at geb.waiting.Wait.waitFor(Wait.groovy:117)
... 11 more
```
</details>
### Muted Tests
> [!NOTE]
> Checks are currently running using the configuration below.
Select tests to mute in this pull request:
π² LayoutWithTemplateSpec > Test that a layout is not applied to a template rendered by a controller by default <!-- uniqueId=[engine:spock]/[spec:functionaltests.layout.LayoutWithTemplateSpec]/[feature:$spock_feature_1_0] -->
Reuse successful test results:
π² β»οΈ Only rerun the tests that failed or were muted before
Click the checkbox to trigger a rerun:
π² **Rerun jobs**
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4636535682
## π¨ TestLens detected 1 failed test π¨
Here is what you can do:
1) Inspect the test failures carefully.
2) If you are convinced that some of the tests are flaky, you can mute them below.
3) Finally, trigger a rerun by checking the rerun checkbox.
### Test Summary
| Check | Project/Task | Test | Runs |
|---|---|---|---|
| [CI / Functional Tests \(Java 25, indy\=false\)](https://github.com/apache/grails-core/actions/runs/27046070256/job/79832186689?pr=15713) | :grails-test-examples-app1:integrationTest | ConditionalOnPropertyFromPluginYmlSpec > conditional beans from plugin.yml properties are all present | β |
π·οΈ Commit: 021059d03e411e7e19cc6465ec1fdb0505db607b
βΆοΈ Tests: 17649 executed
π‘ Checks: 18/38 completed
### Test Failures
<details>
<summary><strong>ConditionalOnPropertyFromPluginYmlSpec > conditional beans from plugin.yml properties are all present</strong> (:grails-test-examples-app1:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/27046070256/job/79832186689?pr=15713">CI / Functional Tests (Java 25, indy=false)</a>)</summary>
```
Condition not satisfied:
$('#loadfirst-present').text() == 'true'
| | |
[] null false
at functionaltests.ConditionalOnPropertyFromPluginYmlSpec.conditional beans from plugin.yml properties are all present(ConditionalOnPropertyFromPluginYmlSpec.groovy:48)
```
|expected|actual|
|---|---|
|<s>true</s>|<b>null</b>|
</details>
### Muted Tests
> [!NOTE]
> Checks are currently running using the configuration below.
Select tests to mute in this pull request:
π² ConditionalOnPropertyFromPluginYmlSpec > conditional beans from plugin.yml properties are all present <!-- uniqueId=[engine:spock]/[spec:functionaltests.ConditionalOnPropertyFromPluginYmlSpec]/[feature:$spock_feature_1_0] -->
Reuse successful test results:
π² β»οΈ Only rerun the tests that failed or were muted before
Click the checkbox to trigger a rerun:
π² **Rerun jobs**
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4672440388
## β
All tests passed β
π·οΈ Commit: 51d5e883100e07f012374863d63d3cc55fff709b
βΆοΈ Tests: 29071 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4626576041
## β
All tests passed β
π·οΈ Commit: a553b4724a2ff1f0ea527110cda8767091dbcc4b
βΆοΈ Tests: 25075 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4684154605
## π¨ TestLens detected 1 failed test π¨
Here is what you can do:
1) Inspect the test failures carefully.
2) If you are convinced that some of the tests are flaky, you can mute them below.
3) Finally, trigger a rerun by checking the rerun checkbox.
### Test Summary
| Check | Project/Task | Test | Runs |
|---|---|---|---|
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27370166467/job/80880087284?pr=15713) | :grails-test-examples-spring-dependency-management:integrationTest | HelloControllerSpec > the application boots with Spring Dependency Management and serves a request | β |
π·οΈ Commit: 5e636fdcd5070df69f507942f605f0e4b9412455
βΆοΈ Tests: 24301 executed
π‘ Checks: 21/38 completed
### Test Failures
<details>
<summary><strong>HelloControllerSpec > the application boots with Spring Dependency Management and serves a request</strong> (:grails-test-examples-spring-dependency-management:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/27370166467/job/80880087284?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@fafbc63 testClass = springdm.HelloControllerSpec, locations = [], classes = [springdm.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true", "server.port=0"], contextCustomizers = [org.springframework.boot.web.server.context.SpringBootTestRandomPortContextCustomizer@1352434e, org.springframework.boot.test.context.PropertyMappingContextCustomizer@0, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@2dc3271b, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@6812fa3a, org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.spockframework.spring.mock.SpockContextCustomizer@0, org.springframework.boot.test.context.Spri
ngBootTestAnnotation@a8449f6f], resourceBasePath = "src/main/webapp", contextLoader = grails.boot.test.GrailsApplicationContextLoader, parent = null]
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.lambda$loadContext$0(DefaultCacheAwareContextLoaderDelegate.java:195)
at org.springframework.test.context.cache.DefaultContextCache.put(DefaultContextCache.java:214)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:160)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:128)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:277)
at org.spockframework.spring.SpringTestContext.getApplicationContext(SpringTestContext.java:49)
at org.spockframework.spring.SpringMockTestExecutionListener.injectSpies(SpringMockTestExecutionListener.java:66)
at org.spockframework.spring.SpringMockTestExecutionListener.prepareTestInstance(SpringMockTestExecutionListener.java:62)
at org.spockframework.spring.AbstractSpringTestExecutionListener.prepareTestInstance(AbstractSpringTestExecutionListener.java:32)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
at org.spockframework.spring.SpringTestContextManager.prepareTestInstance(SpringTestContextManager.java:56)
at org.spockframework.spring.SpringInterceptor.interceptInitializerMethod(SpringInterceptor.java:46)
at org.spockframework.runtime.extension.AbstractMethodInterceptor.intercept(AbstractMethodInterceptor.java:24)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:139)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'jspViewResolver' is expected to be of type 'org.springframework.context.ApplicationListener' but was actually of type 'org.grails.plugins.sitemesh3.GrailsSiteMeshViewResolver'
at org.springframework.beans.factory.support.AbstractBeanFactory.adaptBeanInstance(AbstractBeanFactory.java:418)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:399)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:266)
at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:222)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:140)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:448)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:381)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1016)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
at grails.boot.GrailsApp.run(GrailsApp.groovy:100)
at grails.boot.GrailsApp.run(GrailsApp.groovy:394)
at grails.boot.GrailsApp.run(GrailsApp.groovy:383)
at springdm.Application.main(Application.groovy:27)
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:281)
at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$1(SpringBootContextLoader.java:148)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.lambda$runMain$0(SpringBootContextLoader.java:593)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1465)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:600)
at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.runMain(SpringBootContextLoader.java:592)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:143)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:114)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:247)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.lambda$loadContext$0(DefaultCacheAwareContextLoaderDelegate.java:167)
... 17 more
```
</details>
### Muted Tests
> [!NOTE]
> Checks are currently running using the configuration below.
Select tests to mute in this pull request:
π² HelloControllerSpec > the application boots with Spring Dependency Management and serves a request <!-- uniqueId=[engine:spock]/[spec:springdm.HelloControllerSpec]/[feature:$spock_feature_0_0] -->
Reuse successful test results:
π² β»οΈ Only rerun the tests that failed or were muted before
Click the checkbox to trigger a rerun:
π² **Rerun jobs**
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "codeconsole (via GitHub)" <gi...@apache.org>.
codeconsole commented on code in PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#discussion_r3360720915
##########
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/sitemesh3/Sitemesh3.java:
##########
@@ -38,12 +44,18 @@ public String getName() {
@Override
public String getTitle() {
- return "Sitemesh 3";
+ return "SiteMesh 3";
Review Comment:
Yes β renamed to `GSP SiteMesh 3 Layouts` to match the SiteMesh 2 title.
##########
grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/view/GspLayoutSpec.groovy:
##########
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.grails.forge.feature.view
+
+import org.grails.forge.ApplicationContextSpec
+import org.grails.forge.BuildBuilder
+import org.grails.forge.application.ApplicationType
+import spock.lang.Unroll
+
+class GspLayoutSpec extends ApplicationContextSpec {
+
+ @Unroll
+ void "web #applicationType apps use SiteMesh 3 (grails-sitemesh3) by default"() {
+ when:
+ final String build = new BuildBuilder(beanContext)
+ .features(["gsp"])
Review Comment:
Done β converted the spec to single-quoted strings throughout.
##########
grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/view/GspLayoutSpec.groovy:
##########
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.grails.forge.feature.view
+
+import org.grails.forge.ApplicationContextSpec
+import org.grails.forge.BuildBuilder
+import org.grails.forge.application.ApplicationType
+import spock.lang.Unroll
+
+class GspLayoutSpec extends ApplicationContextSpec {
+
+ @Unroll
+ void "web #applicationType apps use SiteMesh 3 (grails-sitemesh3) by default"() {
+ when:
+ final String build = new BuildBuilder(beanContext)
+ .features(["gsp"])
+ .applicationType(applicationType)
+ .render()
+
+ then:
+ build.contains('implementation "org.apache.grails:grails-sitemesh3"')
+ !build.contains('implementation "org.apache.grails:grails-layout"')
+
+ and: "a SNAPSHOT build exposes the SiteMesh 3 snapshot repo so org.sitemesh:*-SNAPSHOT resolves"
Review Comment:
Agreed β dropped the SNAPSHOT-repo assertions; the spec now only verifies the resolved layout dependency.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4683615714
## π¨ TestLens detected 5 failed tests π¨
Here is what you can do:
1) Inspect the test failures carefully.
2) If you are convinced that some of the tests are flaky, you can mute them below.
3) Finally, trigger a rerun by checking the rerun checkbox.
### Test Summary
| Check | Project/Task | Test | Runs |
|---|---|---|---|
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713) | :grails-test-examples-demo33:test | ApplyTemplateWithoutReferringToTagLibPropertySpec | β |
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713) | :grails-test-examples-app1:test | BookControllerSpec | β |
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713) | :grails-test-examples-app1:test | BookInterceptorSpec | β |
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713) | :grails-test-examples-app1:test | ConfigSpec | β |
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713) | :grails-test-examples-app1:test | UriMatchingInterceptorSpec | β |
π·οΈ Commit: c7a29df896b9886333e1702ec9dd688fb5a89211
βΆοΈ Tests: 9275 executed
π‘ Checks: 16/38 completed
### Test Failures
<details>
<summary><strong>ApplyTemplateWithoutReferringToTagLibPropertySpec</strong> (:grails-test-examples-demo33:test in <a href="https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jspViewResolver': No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1225)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121)
at org.grails.testing.GrailsUnitTest$Trait$Helper.defineBeans(GrailsUnitTest.groovy:107)
at org.grails.testing.spock.WebSetupSpecInterceptor.setup(WebSetupSpecInterceptor.groovy:79)
at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:66)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:139)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.sitemesh.webmvc.SiteMeshViewResolverBeanPostProcessor.postProcessAfterInitialization(SiteMeshViewResolverBeanPostProcessor.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1818)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
... 14 more
```
</details>
<details>
<summary><strong>BookControllerSpec</strong> (:grails-test-examples-app1:test in <a href="https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jspViewResolver': No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1225)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121)
at org.grails.testing.GrailsUnitTest$Trait$Helper.defineBeans(GrailsUnitTest.groovy:107)
at org.grails.testing.spock.WebSetupSpecInterceptor.setup(WebSetupSpecInterceptor.groovy:79)
at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:66)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:139)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.sitemesh.webmvc.SiteMeshViewResolverBeanPostProcessor.postProcessAfterInitialization(SiteMeshViewResolverBeanPostProcessor.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1818)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
... 14 more
```
</details>
<details>
<summary><strong>BookInterceptorSpec</strong> (:grails-test-examples-app1:test in <a href="https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jspViewResolver': No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1225)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121)
at org.grails.testing.GrailsUnitTest$Trait$Helper.defineBeans(GrailsUnitTest.groovy:107)
at org.grails.testing.spock.WebSetupSpecInterceptor.setup(WebSetupSpecInterceptor.groovy:79)
at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:66)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:139)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.sitemesh.webmvc.SiteMeshViewResolverBeanPostProcessor.postProcessAfterInitialization(SiteMeshViewResolverBeanPostProcessor.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1818)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
... 14 more
```
</details>
<details>
<summary><strong>ConfigSpec</strong> (:grails-test-examples-app1:test in <a href="https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jspViewResolver': No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1225)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121)
at org.grails.testing.GrailsUnitTest$Trait$Helper.defineBeans(GrailsUnitTest.groovy:107)
at org.grails.testing.spock.WebSetupSpecInterceptor.setup(WebSetupSpecInterceptor.groovy:79)
at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:66)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:139)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.sitemesh.webmvc.SiteMeshViewResolverBeanPostProcessor.postProcessAfterInitialization(SiteMeshViewResolverBeanPostProcessor.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1818)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
... 14 more
```
</details>
<details>
<summary><strong>UriMatchingInterceptorSpec</strong> (:grails-test-examples-app1:test in <a href="https://github.com/apache/grails-core/actions/runs/27366667302/job/80867896657?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jspViewResolver': No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1225)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1121)
at org.grails.testing.GrailsUnitTest$Trait$Helper.defineBeans(GrailsUnitTest.groovy:107)
at org.grails.testing.spock.WebSetupSpecInterceptor.setup(WebSetupSpecInterceptor.groovy:79)
at org.grails.testing.spock.WebSetupSpecInterceptor.intercept(WebSetupSpecInterceptor.groovy:66)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:139)
at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:157)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contentProcessor' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201)
at org.sitemesh.webmvc.SiteMeshViewResolverBeanPostProcessor.postProcessAfterInitialization(SiteMeshViewResolverBeanPostProcessor.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1818)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
... 14 more
```
</details>
### Muted Tests
> [!NOTE]
> Checks are currently running using the configuration below.
Select tests to mute in this pull request:
π² ApplyTemplateWithoutReferringToTagLibPropertySpec <!-- uniqueId=[engine:spock]/[spec:demo.ApplyTemplateWithoutReferringToTagLibPropertySpec] -->
π² BookControllerSpec <!-- uniqueId=[engine:spock]/[spec:functionaltests.BookControllerSpec] -->
π² BookInterceptorSpec <!-- uniqueId=[engine:spock]/[spec:functionaltests.BookInterceptorSpec] -->
π² ConfigSpec <!-- uniqueId=[engine:spock]/[spec:functionaltests.ConfigSpec] -->
π² UriMatchingInterceptorSpec <!-- uniqueId=[engine:spock]/[spec:demo.UriMatchingInterceptorSpec] -->
Reuse successful test results:
π² β»οΈ Only rerun the tests that failed or were muted before
Click the checkbox to trigger a rerun:
π² **Rerun jobs**
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4607460381
## β
All tests passed β
π·οΈ Commit: b0e0990395e5def7766381514412abab6cd9c6f2
βΆοΈ Tests: 37498 executed
βͺοΈ Checks: 35/35 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] 8.x Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "codeconsole (via GitHub)" <gi...@apache.org>.
codeconsole merged PR #15713:
URL: https://github.com/apache/grails-core/pull/15713
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "codeconsole (via GitHub)" <gi...@apache.org>.
codeconsole commented on code in PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#discussion_r3384767261
##########
.github/workflows/gradle.yml:
##########
@@ -24,6 +24,11 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+# Exercise SiteMesh 3 by default in the test apps. The example/suite builds read this
+# flag to choose grails-sitemesh3 over the legacy grails-layout; unset it (or set it to
+# anything other than 'true') to fall back to SiteMesh 2.
+env:
+ SITEMESH3_TESTING_ENABLED: 'true'
Review Comment:
flipped
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4674934420
## β
All tests passed β
π·οΈ Commit: 6e83b250f1c43a14787dd4d9f5edea757a52b394
βΆοΈ Tests: 38124 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] 8.x Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "jdaugherty (via GitHub)" <gi...@apache.org>.
jdaugherty commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4731999452
I confirmed with forge locally that selecting sitemesh2 does what's expected:
<img width="1365" height="686" alt="image" src="https://github.com/user-attachments/assets/aa5dfda2-bcef-472c-9261-8ccb610a5670" />
Otherwise, it uses sitemesh3 by default.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "codecov[bot] (via GitHub)" <gi...@apache.org>.
codecov[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4614839961
## [Codecov](https://app.codecov.io/gh/apache/grails-core/pull/15713?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 48.9968%. Comparing base ([`4836003`](https://app.codecov.io/gh/apache/grails-core/commit/483600313de1cbc3bd71beacabd181de896a4d59?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`9784068`](https://app.codecov.io/gh/apache/grails-core/commit/97840681ee21d06b62fec89d0bb01b60a52e606c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
<details><summary>Additional details and impacted files</summary>
[](https://app.codecov.io/gh/apache/grails-core/pull/15713?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
```diff
@@ Coverage Diff @@
## 8.0.x #15713 +/- ##
==================================================
- Coverage 49.0042% 48.9968% -0.0074%
+ Complexity 16759 16755 -4
==================================================
Files 2014 2014
Lines 94747 94747
Branches 16547 16547
==================================================
- Hits 46430 46423 -7
- Misses 41019 41024 +5
- Partials 7298 7300 +2
```
[see 4 files with indirect coverage changes](https://app.codecov.io/gh/apache/grails-core/pull/15713/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
</details>
<details><summary> :rocket: New features to boost your workflow: </summary>
- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "codeconsole (via GitHub)" <gi...@apache.org>.
codeconsole commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4628724477
@matrei good catch on the glitch. Root cause: `sitemesh3` (an invisible default) and `grails-layout` (a selectable feature) were an unbound one-of pair, so `/features/default` kept returning `sitemesh3` even after `grails-layout` was selected β hence both showing.
Fixed by modeling the choice as a single `GspLayoutImpl` option (`SITEMESH3` default / `GRAILS_LAYOUT`), the same pattern as the servlet and reloading groups: both decorators are now invisible, option-driven defaults, so exactly one ever resolves. The option is threaded through `Options`/`FeatureFilter`/`ContextFactory`, exposed via `/select-options` (`gspLayout`), and added as a `--gsp-layout` CLI flag.
This needs a companion SiteMesh-version dropdown in `grails-forge-ui` to drive the new `gspLayout` option (the old `grails-layout` feature card goes away).
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "matrei (via GitHub)" <gi...@apache.org>.
matrei commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4661431093
I think the Forge change actually made it worse, because now I cannot select `grails-layout` at all:
<img width="520" height="353" alt="Screenshot from 2026-06-09 17-37-55" src="https://github.com/user-attachments/assets/a9fbae45-9766-440c-b1a2-b522d40e609b" />
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "jamesfredley (via GitHub)" <gi...@apache.org>.
jamesfredley commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4674291612
I re-checked the current PR head (`bb94c8c27d`) against the earlier SM2 parity list. A few items look addressed now, but these still look partial or unresolved:
| Item | Status | Notes |
| --- | --- | --- |
| `g:applyLayout` attribute parity | Partial | `RenderSitemeshTagLib.groovy:78` now handles body, `name`, and `params` (`:112`, `:122`), but still does not support the SM2 attribute surface: `template`, `url`, `action`, `controller`, `model`, `contentType`, `encoding`, or `parse`. |
| Default layout config + implicit `application` fallback | Unresolved | SM3 still reads only `grails.sitemesh.default.layout` (`Sitemesh3GrailsPlugin.groovy:83`) and passes `null` when unset (`:102`). It does not consult `grails.views.layout.default`, and does not match SM2's implicit `application` fallback behavior (`GroovyPageLayoutFinder.groovy:180`). |
| `grails.views.layout.enable.nongsp` | Unresolved | SM2 wires this through `LayoutGrailsPlugin.groovy:38` and `GroovyPageLayoutFinder.groovy:87`. I do not see an SM3 equivalent in `Sitemesh3LayoutFinder.java`, which still only resolves via the GSP locator. |
| `<title>` stripping robustness | Unresolved | `Sitemesh3CapturedPage.java:232` still searches for `"<title"` without checking the tag boundary, so cases like `<titlebar>` / `<title-x>` can still be misidentified before the real `</title>` is found. |
| Upstream auto-config suppression guard | Partial | There is improved view-resolver auto-config (`Sitemesh3AutoConfiguration.java:38`), but the plugin still relies on a disabled bean named `sitemesh` with `NoopSitemeshFilter` (`Sitemesh3GrailsPlugin.groovy:112`, `:125`). I do not see a guard test proving the upstream filter auto-config stays suppressed. |
| Test examples default path | Partial | Most examples now default to SM3 via `SITEMESH2_TESTING_ENABLED`, but the Hibernate 7 examples still use the old/inverted `SITEMESH3_TESTING_ENABLED` toggle and therefore default to SM2 when unset, e.g. `grails-test-examples/hibernate7/grails-hibernate/build.gradle:41`. |
| SM2-only examples without SM3 coverage | Partial | `database-cleanup`, `scaffolding-fields`, and `test-phases` were fixed, but `scaffolding` and `jetty` remain hardcoded to `grails-layout` only (`scaffolding/build.gradle:49`, `jetty/build.gradle:41`). `gsp-layout` can probably remain the intentional SM2 anchor. |
| CI coverage for SM2 lane | Unresolved | I do not see `SITEMESH2_TESTING_ENABLED` or `SITEMESH3_TESTING_ENABLED` in `.github/workflows`. The default SM3 path is exercised, but there is no explicit SM2 compatibility lane. |
| `grails-gsp-spring-boot` publication | Unresolved | The project is included in `settings.gradle:175` and depends on `grails-sitemesh3` (`grails-gsp/spring-boot/build.gradle:37`), but it is still absent from the published projects list in `gradle/publish-root-config.gradle` while `grails-sitemesh3` is listed at `:76`. |
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4616106973
## β
All tests passed β
π·οΈ Commit: 97840681ee21d06b62fec89d0bb01b60a52e606c
βΆοΈ Tests: 20430 executed
βͺοΈ Checks: 40/40 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] 8.x Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4723739570
## β
All tests passed β
π·οΈ Commit: cb6edf763057105cea191b50958e6729f293e9d2
βΆοΈ Tests: 21733 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "codeconsole (via GitHub)" <gi...@apache.org>.
codeconsole commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4637462946
https://github.com/apache/grails-core/pull/15585
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] 8.x Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4734248032
## β
All tests passed β
π·οΈ Commit: d7667d5be296f5b9d6ef0fa7751aaf3897e654fd
βΆοΈ Tests: 37285 executed
βͺοΈ Checks: 46/46 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] 8.x Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "jdaugherty (via GitHub)" <gi...@apache.org>.
jdaugherty commented on code in PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#discussion_r3428652771
##########
grails-gsp/grails-sitemesh3/src/main/groovy/org/grails/plugins/web/taglib/RenderSitemeshTagLib.groovy:
##########
@@ -76,27 +110,130 @@ class RenderSitemeshTagLib implements TagLibrary {
// causing "request is not active anymore" errors.
Closure applyLayout = { Map attrs, body ->
Review Comment:
To make this faster, you should use the method version instead of closure.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "jamesfredley (via GitHub)" <gi...@apache.org>.
jamesfredley commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4615532118
Gaps to review and potentially address before SM3 becomes default
#
| Gap / Open item | SM2 / Current state | SM3 / Needed |
| --- | --- | --- |
| `g:applyLayout` attributes (`template`,`url`,`action`,`controller`,`params`,`model`,`contentType`,`encoding`,`parse`) | Full support - `RenderGrailsLayoutTagLib.groovy:100-173` | `name` + body only; other attrs silently ignored - `RenderSitemeshTagLib.groovy:77-106` |
| Default-layout config + implicit `application` fallback | Reads `grails.views.layout.default` (`LayoutGrailsPlugin:37`); falls back to layout `application` (`GroovyPageLayoutFinder:180`) | Reads only `grails.sitemesh.default.layout` (`Sitemesh3GrailsPlugin:83`); no `application` fallback |
| Partial/template render suppression (`GrailsRenderViewMutator` + `GrailsLayoutSelector`) | Registers both (`LayoutGrailsPlugin:74-75`); consumed by core `ResponseRenderer:340-341,563` | Registers neither β beans null β behavior lost |
| `grails.views.layout.enable.nongsp` (non-GSP/JSP layouts) | `LayoutGrailsPlugin:38` + `GroovyPageLayoutFinder` `enableNonGspViews`/`viewMustExist` | `Sitemesh3LayoutFinder:192-194` GSP locator only; flag unsupported |
| Captured-page isolation across nested/sibling `applyLayout` | N/A (different mechanism) | `GrailsSiteMeshViewContext.dispatch:81` sets fresh page, no restore; taglib saves only `LAYOUT_ATTRIBUTE` (`RenderSitemeshTagLib:78,100-104`) |
| No-body captured page + `layoutBody` | Handled | `CaptureAwareContentProcessor:82` returns used page without data; `layoutBody` reads only `body` (`RenderSitemeshTagLib:218-225`) |
| `<title>` strip robustness | Regex-based, well-formed | `extractHead()` matches `"<title"` as prefix - mis-slices `<titlebar>`/`<title-x>` (`Sitemesh3CapturedPage.java:232`) |
| Aggregate web starter still defaults to SM2 | `starter-web/build.gradle:53` β `:grails-layout` unless `SITEMESH3_TESTING_ENABLED=true` | Default branch must be `:grails-sitemesh3` |
| ~35 test examples default to SM2 | `else β grails-layout` in every example (e.g. `app1/build.gradle:42-47`) | Default = SM3; SM2 via forced lane |
| Main unit suite defaults to SM2 | `grails-test-suite-uber/build.gradle:53-58` β `:grails-layout` | Default = SM3 |
| SM2-only examples with **no** SM3 coverage | Hardcoded `grails-layout`: `test-phases:42`, `scaffolding:49`, `scaffolding-fields:38`, `jetty:41`, `database-cleanup:37`, `gsp-layout:50` | Keep as SM2 anchors; add SM3 variants where parity matters |
| Default path β tested path | `SITEMESH3_TESTING_ENABLED` gates SM3; default build never runs SM3 | Retire/invert flag so default == tested |
| No CI lane exercising SM3 as default | Only opt-in env runs SM3 | Add SM3-default lane + SM2 lane |
| Fragile upstream auto-config suppression | Disabled `NoopSitemeshFilter` named `sitemesh` suppresses upstream `SiteMeshAutoConfiguration` (`Sitemesh3GrailsPlugin:106-124`) | Robust suppression + guard test |
| Servlet 6.1 / Tomcat 11 forwardβinclude dispatch | SM3 bypasses `RequestDispatcher.forward()` for absolute layout paths (`GrailsSiteMeshViewContext.java:88-93`) | Functional coverage on Tomcat 11 |
| `grails-gsp-spring-boot` unpublished | In `settings.gradle:174`, depends on SM3 (`spring-boot/build.gradle:37`), but absent from `publish-root-config.gradle` (only `grails-sitemesh3` at `:75`) | Publish or don't rely on it |
## Not gaps (verified parity)
Resolution order (6 steps), `NONE_LAYOUT`, `layoutTitle`/`layoutHead`, `pageProperty`/`ifPageProperty`, meta extraction, `body.*` attrs, `grailsLayout:parameter`, comma/chained decoration (happy path), unbounded layout cache (SM2 identical).
## Minor / cosmetic
Cache-interval key differs: SM3 `grails.sitemesh.layout.cache.interval` vs SM2 `grails.gsp.reload.interval`.
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4640805790
## β
All tests passed β
π·οΈ Commit: 8a1fbcbcd1e643c302d3f6c465fc69c9c6ab1d25
βΆοΈ Tests: 31826 executed
βͺοΈ Checks: 43/43 completed
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Make SiteMesh 3 the default GSP layout [grails-core]
Posted by "testlens-app[bot] (via GitHub)" <gi...@apache.org>.
testlens-app[bot] commented on PR #15713:
URL: https://github.com/apache/grails-core/pull/15713#issuecomment-4635215419
## π¨ TestLens detected 1 failed test π¨
Here is what you can do:
1) Inspect the test failures carefully.
2) If you are convinced that some of the tests are flaky, you can mute them below.
3) Finally, trigger a rerun by checking the rerun checkbox.
### Test Summary
| Check | Project/Task | Test | Runs |
|---|---|---|---|
| [CI / Functional Tests \(Java 21, indy\=true\)](https://github.com/apache/grails-core/actions/runs/27037024519/job/79803490336?pr=15713) | :grails-test-examples-app1:integrationTest | ConditionalOnPropertyFromPluginYmlSpec > conditional beans from plugin.yml properties are all present | β |
π·οΈ Commit: f8162468cf84cf93751a954472090b218be84452
βΆοΈ Tests: 17087 executed
π‘ Checks: 18/38 completed
### Test Failures
<details>
<summary><strong>ConditionalOnPropertyFromPluginYmlSpec > conditional beans from plugin.yml properties are all present</strong> (:grails-test-examples-app1:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/27037024519/job/79803490336?pr=15713">CI / Functional Tests (Java 21, indy=true)</a>)</summary>
```
Condition not satisfied:
$('#loadfirst-present').text() == 'true'
| | |
[] null false
at functionaltests.ConditionalOnPropertyFromPluginYmlSpec.conditional beans from plugin.yml properties are all present(ConditionalOnPropertyFromPluginYmlSpec.groovy:48)
```
|expected|actual|
|---|---|
|<s>true</s>|<b>null</b>|
</details>
### Muted Tests
> [!NOTE]
> Checks are currently running using the configuration below.
Select tests to mute in this pull request:
π² ConditionalOnPropertyFromPluginYmlSpec > conditional beans from plugin.yml properties are all present <!-- uniqueId=[engine:spock]/[spec:functionaltests.ConditionalOnPropertyFromPluginYmlSpec]/[feature:$spock_feature_1_0] -->
Reuse successful test results:
π² β»οΈ Only rerun the tests that failed or were muted before
Click the checkbox to trigger a rerun:
π² **Rerun jobs**
---
_Learn more about TestLens at [testlens.app](https://testlens.app)._
--
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org