diff --git a/build.gradle b/build.gradle index 244bc18946..aafc2a68ef 100644 --- a/build.gradle +++ b/build.gradle @@ -62,20 +62,6 @@ configure([rootProject] + javaProjects) { project -> matching { it.name.endsWith("Classpath") }.all { it.extendsFrom(dependencyManagement) } } - test { - useJUnitPlatform() - include(["**/*Tests.class", "**/*Test.class"]) - systemProperty("java.awt.headless", "true") - systemProperty("testGroups", project.properties.get("testGroups")) - systemProperty("io.netty.leakDetection.level", "paranoid") - systemProperty("io.netty5.leakDetectionLevel", "paranoid") - systemProperty("io.netty5.leakDetection.targetRecords", "32") - systemProperty("io.netty5.buffer.lifecycleTracingEnabled", "true") - systemProperty("io.netty5.buffer.leakDetectionEnabled", "true") - jvmArgs(["--add-opens=java.base/java.lang=ALL-UNNAMED", - "--add-opens=java.base/java.util=ALL-UNNAMED"]) - } - dependencies { dependencyManagement(enforcedPlatform(dependencies.project(path: ":framework-platform"))) diff --git a/buildSrc/src/main/java/org/springframework/build/TestConventions.java b/buildSrc/src/main/java/org/springframework/build/TestConventions.java index 6f949bf43d..b3faae547b 100644 --- a/buildSrc/src/main/java/org/springframework/build/TestConventions.java +++ b/buildSrc/src/main/java/org/springframework/build/TestConventions.java @@ -16,6 +16,8 @@ package org.springframework.build; +import java.util.Map; + import org.gradle.api.Project; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.tasks.testing.Test; @@ -41,11 +43,36 @@ class TestConventions { private void configureTestConventions(Project project) { project.getTasks().withType(Test.class, - test -> project.getPlugins().withType(TestRetryPlugin.class, testRetryPlugin -> { - TestRetryTaskExtension testRetry = test.getExtensions().getByType(TestRetryTaskExtension.class); - testRetry.getFailOnPassedAfterRetry().set(true); - testRetry.getMaxRetries().set(isCi() ? 3 : 0); - })); + test -> { + configureTests(project, test); + configureTestRetryPlugin(project, test); + }); + } + + private void configureTests(Project project, Test test) { + test.useJUnitPlatform(); + test.include("**/*Tests.class", "**/*Test.class"); + test.setSystemProperties(Map.of( + "java.awt.headless", "true", + "io.netty.leakDetection.level", "paranoid", + "io.netty5.leakDetectionLevel", "paranoid", + "io.netty5.leakDetection.targetRecords", "32", + "io.netty5.buffer.lifecycleTracingEnabled", "true" + )); + if (project.hasProperty("testGroups")) { + test.systemProperty("testGroups", project.getProperties().get("testGroups")); + } + test.jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED", + "--add-opens=java.base/java.util=ALL-UNNAMED", + "-Djava.locale.providers=COMPAT"); + } + + private void configureTestRetryPlugin(Project project, Test test) { + project.getPlugins().withType(TestRetryPlugin.class, testRetryPlugin -> { + TestRetryTaskExtension testRetry = test.getExtensions().getByType(TestRetryTaskExtension.class); + testRetry.getFailOnPassedAfterRetry().set(true); + testRetry.getMaxRetries().set(isCi() ? 3 : 0); + }); } private boolean isCi() {