You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ma...@apache.org on 2026/08/06 06:52:52 UTC

(grails-core) 01/01: build(refactor): replace deprecated Gradle test listener creation

This is an automated email from the ASF dual-hosted git repository.

matrei pushed a commit to branch refactor-depr-gradle-test-listeners
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 3d614f9985d0e355c8219f7420eabc47b6ba4e7a
Author: Mattias Reichel <ma...@gmail.com>
AuthorDate: Thu Aug 6 08:52:29 2026 +0200

    build(refactor): replace deprecated Gradle test listener creation
---
 dependencies.gradle                                |  2 +-
 etc/bin/test-bisect.groovy                         | 57 +++++++++++-----------
 gradle/hibernate5-test-config.gradle               | 24 ++++-----
 gradle/hibernate7-test-config.gradle               | 24 ++++-----
 gradle/mongodb-forked-test-config.gradle           | 10 ++--
 gradle/mongodb-test-config.gradle                  | 10 ++--
 gradle/redis-test-config.gradle                    |  4 +-
 gradle/spring-security-test-config.gradle          |  4 +-
 gradle/test-config.gradle                          | 34 +++++++------
 .../grails-datastore-gorm-neo4j/build.gradle       | 10 ++--
 10 files changed, 100 insertions(+), 79 deletions(-)

diff --git a/dependencies.gradle b/dependencies.gradle
index 29bc297882..85c0b5cabb 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -122,7 +122,7 @@ ext {
             'plexus-xml.version'            : '3.0.2',
             'rxjava.version'                : '1.3.8',
             'rxjava2.version'               : '2.2.21',
-            'selenium.version'              : '4.38.0',
+            'selenium.version'              : '4.46.0',
             'sitemesh.version'              : '2.6.0',
             'scribejava.version'            : '8.3.3',
             'spock.version'                 : '2.4-groovy-5.0',
diff --git a/etc/bin/test-bisect.groovy b/etc/bin/test-bisect.groovy
index bf32d25f27..9a85992802 100644
--- a/etc/bin/test-bisect.groovy
+++ b/etc/bin/test-bisect.groovy
@@ -24,35 +24,36 @@ import groovy.cli.commons.CliBuilder
 
 /**
  * This script finds the test class that's causing test pollution in other tests.
- * To use it, gradle must be configured to run sequentially, without retries, and output a specific line
- * so the script knows the test order. The script will pass the property `testBisect` for gradle to detect when being called
- * by this script. For example:
+ * To use it, Gradle must be configured to run sequentially, without retries, and output a specific line
+ * so the script knows the test order. The script will pass the property `testBisect` for Gradle to detect when
+ * being called by this script. For example:
  *
- *     if(hasProperty('testBisect')) {
- *          tasks.withType(Test).configureEach {
- *              maxParallelForks = 1
- *              forkEvery = 0
- *               develocity {
- *                   testDistribution {
- *                       enabled.set(false)
- *                       retryInSameJvm.set(true)
- *                  }
- *                   testRetry {
- *                       maxRetries = 1
- *                       maxFailures = 1
- *                       failOnPassedAfterRetry = true
- *                   }
- *               }
- *              beforeTest { testDescriptor ->
- *                  logger.info "STARTED TEST: ${testDescriptor.className} > ${testDescriptor.name}"
- *              }
- *               afterSuite { desc, result ->
- *                   if (!desc.parent) {
- *                       logger.info("FINISHED - ${result.failedTestCount == 0 && result.testCount > 1} ? 'PASSED' : 'FAILED'} - ${result.testCount} tests executed, ${result.failedTestCount} failed")
- *                   }
- *               }
- *          }
- *      }
+ *     if (hasProperty('testBisect')) {
+ *         tasks.withType(Test).configureEach {
+ *             maxParallelForks = 1
+ *             forkEvery = 0
+ *             develocity {
+ *                 testDistribution {
+ *                     enabled.set(false)
+ *                     retryInSameJvm.set(true)
+ *                 }
+ *                 testRetry {
+ *                     maxRetries = 1
+ *                     maxFailures = 1
+ *                     failOnPassedAfterRetry = true
+ *                 }
+ *             }
+ *             addTestListener([
+ *                 beforeTest: { testDescriptor ->
+ *                     logger.info("STARTED TEST: ${testDescriptor.className} > ${testDescriptor.name}")
+ *                 }
+ *                 afterSuite: { desc, result ->
+ *                     if (!desc.parent) {
+ *                        logger.info("FINISHED - ${result.failedTestCount == 0 && result.testCount > 1} ? 'PASSED' : 'FAILED'} - ${result.testCount} tests executed, ${result.failedTestCount} failed")
+ *                     }
+ *             ] as TestListener)
+ *         }
+ *     }
  */
 class TestPollution {
 
diff --git a/gradle/hibernate5-test-config.gradle b/gradle/hibernate5-test-config.gradle
index 609e110e07..e8631ab695 100644
--- a/gradle/hibernate5-test-config.gradle
+++ b/gradle/hibernate5-test-config.gradle
@@ -67,16 +67,18 @@ tasks.withType(Test).configureEach {
         info.events = debug.events
         info.exceptionFormat = debug.exceptionFormat
     }
-    afterTest { desc, result ->
-        logger.quiet(' -- Executed test {} [{}] with result: {}', desc.name, desc.className, result.resultType)
-    }
-    afterSuite { desc, result ->
-        if (!desc.parent) { // will match the outermost suite
-            def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
-            def startItem = '|  ', endItem = '  |'
-            def repeatLength = startItem.length() + output.length() + endItem.length()
-            def dashes = '-' * repeatLength
-            logger.quiet('\n{}\n{}{}{}\n{}', dashes, startItem, output, endItem, dashes)
+    addTestListener([
+        afterTest: { desc, result ->
+            logger.quiet(' -- Executed test {} [{}] with result: {}', desc.name, desc.className, result.resultType)
+        },
+        afterSuite: { desc, result ->
+            if (!desc.parent) { // will match the outermost suite
+                def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
+                def startItem = '|  ', endItem = '  |'
+                def repeatLength = startItem.length() + output.length() + endItem.length()
+                def dashes = '-' * repeatLength
+                logger.quiet('\n{}\n{}{}{}\n{}', dashes, startItem, output, endItem, dashes)
+            }
         }
-    }
+    ] as TestListener)
 }
diff --git a/gradle/hibernate7-test-config.gradle b/gradle/hibernate7-test-config.gradle
index 2753ebbf72..6e5a16ff98 100644
--- a/gradle/hibernate7-test-config.gradle
+++ b/gradle/hibernate7-test-config.gradle
@@ -65,16 +65,18 @@ tasks.withType(Test).configureEach {
         info.events = debug.events
         info.exceptionFormat = debug.exceptionFormat
     }
-    afterTest { desc, result ->
-        logger.quiet(' -- Executed test {} [{}] with result: {}', desc.name, desc.className, result.resultType)
-    }
-    afterSuite { desc, result ->
-        if (!desc.parent) { // will match the outermost suite
-            def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
-            def startItem = '|  ', endItem = '  |'
-            def repeatLength = startItem.length() + output.length() + endItem.length()
-            def dashes = '-' * repeatLength
-            logger.quiet('\n{}\n{}{}{}\n{}', dashes, startItem, output, endItem, dashes)
+    addTestListener([
+        afterTest: { desc, result ->
+            logger.quiet(' -- Executed test {} [{}] with result: {}', desc.name, desc.className, result.resultType)
+        },
+        afterSuite: { desc, result ->
+            if (!desc.parent) { // will match the outermost suite
+                def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
+                def startItem = '|  ', endItem = '  |'
+                def repeatLength = startItem.length() + output.length() + endItem.length()
+                def dashes = '-' * repeatLength
+                logger.quiet('\n{}\n{}{}{}\n{}', dashes, startItem, output, endItem, dashes)
+            }
         }
-    }
+    ] as TestListener)
 }
diff --git a/gradle/mongodb-forked-test-config.gradle b/gradle/mongodb-forked-test-config.gradle
index 6483563e82..77f2703322 100644
--- a/gradle/mongodb-forked-test-config.gradle
+++ b/gradle/mongodb-forked-test-config.gradle
@@ -52,10 +52,12 @@ tasks.withType(Test).configureEach {
     useJUnitPlatform()
     maxParallelForks = configuredTestParallel
     jvmArgs = ['-Xmx768M']
-    afterSuite {
-        System.out.print('.')
-        System.out.flush()
-    }
+    addTestListener([
+        afterSuite: { desc, result ->
+            System.out.print('.')
+            System.out.flush()
+        }
+    ] as TestListener)
     testLogging {
         events('passed', 'skipped', 'failed')
         exceptionFormat = 'full'
diff --git a/gradle/mongodb-test-config.gradle b/gradle/mongodb-test-config.gradle
index 491dc3d57f..ddbdb2818a 100644
--- a/gradle/mongodb-test-config.gradle
+++ b/gradle/mongodb-test-config.gradle
@@ -52,10 +52,12 @@ tasks.withType(Test).configureEach {
     useJUnitPlatform()
     maxParallelForks = 1
     jvmArgs = ['-Xmx1028M']
-    afterSuite {
-        System.out.print('.')
-        System.out.flush()
-    }
+    addTestListener([
+        afterSuite: { desc, result ->
+            System.out.print('.')
+            System.out.flush()
+        }
+    ] as TestListener)
     testLogging {
         events('passed', 'skipped', 'failed')
         exceptionFormat = 'full'
diff --git a/gradle/redis-test-config.gradle b/gradle/redis-test-config.gradle
index e79a2c624f..2d861ea005 100644
--- a/gradle/redis-test-config.gradle
+++ b/gradle/redis-test-config.gradle
@@ -43,7 +43,9 @@ tasks.withType(Test).configureEach {
         exceptionFormat = 'full'
         events 'passed', 'skipped', 'failed'
     }
-    beforeTest { descriptor -> logger.quiet(" -- $descriptor") }
+    addTestListener([
+        beforeTest: { descriptor -> logger.quiet(" -- $descriptor") }
+    ] as TestListener)
 
     // Forwarded to org.apache.grails.testing.redis extensions to control the Testcontainers Redis image version
     if (project.hasProperty('redisContainerVersion')) {
diff --git a/gradle/spring-security-test-config.gradle b/gradle/spring-security-test-config.gradle
index 75c2c44b1d..9d8efd1512 100644
--- a/gradle/spring-security-test-config.gradle
+++ b/gradle/spring-security-test-config.gradle
@@ -43,7 +43,9 @@ tasks.withType(Test).configureEach {
         exceptionFormat = 'full'
         events 'passed', 'skipped', 'failed'//, 'standardOut', 'standardError'
     }
-    beforeTest { descriptor -> logger.quiet(" -- $descriptor") }
+    addTestListener([
+            beforeTest: { descriptor -> logger.quiet(" -- $descriptor") }
+    ] as TestListener)
 }
 
 tasks.named('integrationTest', Test) {
diff --git a/gradle/test-config.gradle b/gradle/test-config.gradle
index 12a9476a89..e4ad66b9c5 100644
--- a/gradle/test-config.gradle
+++ b/gradle/test-config.gradle
@@ -89,10 +89,12 @@ tasks.withType(Test).configureEach {
     if (System.getProperty('debug.tests')) {
         jvmArgs += debugArguments
     }
-    afterSuite {
-        System.out.print('.')
-        System.out.flush()
-    }
+    addTestListener([
+        afterSuite: { desc, result ->
+            System.out.print('.')
+            System.out.flush()
+        }
+    ] as TestListener)
     // Bridge Geb-specific properties (e.g. from local.properties) to the Test JVM
     // to allow local overrides of Docker images and other settings.
     project.properties.each { key, value ->
@@ -119,15 +121,19 @@ if (hasProperty('testBisect')) {
             }
         }
 
-        beforeTest { testDescriptor ->
-            logger.info('STARTED TEST: {} > {}', testDescriptor.className, testDescriptor.name)
-        }
-
-        afterSuite { desc, result ->
-            if (!desc.parent) {
-                def testStatus = result.failedTestCount == 0 && result.testCount > 1 ? 'PASSED' : 'FAILED'
-                logger.info('FINISHED - {} - {} tests executed, {} failed', testStatus, result.testCount, result.failedTestCount)
-            }
-        }
+        addTestListener([
+                beforeTest: { testDescriptor ->
+                    logger.info('STARTED TEST: {} > {}', testDescriptor.className, testDescriptor.name)
+                },
+                afterSuite: { suite, result ->
+                    if (!suite.parent) {
+                        def testStatus = result.failedTestCount == 0 && result.testCount > 1 ? 'PASSED' : 'FAILED'
+                        logger.info(
+                                'FINISHED - {} - {} tests executed, {} failed',
+                                testStatus, result.testCount, result.failedTestCount
+                        )
+                    }
+                }
+        ] as TestListener)
     }
 }
diff --git a/grails-data-neo4j/grails-datastore-gorm-neo4j/build.gradle b/grails-data-neo4j/grails-datastore-gorm-neo4j/build.gradle
index 8f1555f004..8267779b0a 100644
--- a/grails-data-neo4j/grails-datastore-gorm-neo4j/build.gradle
+++ b/grails-data-neo4j/grails-datastore-gorm-neo4j/build.gradle
@@ -51,10 +51,12 @@ test {
     forkEvery = 10
 
     jvmArgs = ['-Xmx1028M']
-    afterSuite {
-        System.out.print('.')
-        System.out.flush()
-    }
+    addTestListener([
+        afterSuite: { desc, result ->
+            System.out.print('.')
+            System.out.flush()
+        }
+    ] as TestListener)
 }
 
 test.doFirst {