diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibility.java b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibility.java index b1351eceb48..1925f4aabbe 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibility.java +++ b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibility.java @@ -48,6 +48,10 @@ public @interface GradleCompatibility { */ boolean configurationCache() default false; - String versionsLessThan() default ""; + /** + * Minimum version of Gradle against which compatibility should be tested. + * @return minimum version + */ + String minimumVersion() default ""; } diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java index 2075f2b6712..6177a9531ae 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java +++ b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java @@ -59,10 +59,10 @@ final class GradleCompatibilityExtension implements TestTemplateInvocationContex GradleCompatibility gradleCompatibility = AnnotationUtils.findAnnotation(testClass, GradleCompatibility.class) .get(); Stream gradleVersions = GRADLE_VERSIONS.stream(); - if (StringUtils.hasText(gradleCompatibility.versionsLessThan())) { - GradleVersion upperExclusive = GradleVersion.version(gradleCompatibility.versionsLessThan()); + if (StringUtils.hasText(gradleCompatibility.minimumVersion())) { + GradleVersion lowerInclusive = GradleVersion.version(gradleCompatibility.minimumVersion()); gradleVersions = gradleVersions - .filter((version) -> GradleVersion.version(version).compareTo(upperExclusive) < 0); + .filter((version) -> GradleVersion.version(version).compareTo(lowerInclusive) >= 0); } return gradleVersions.flatMap((version) -> { List invocationContexts = new ArrayList<>(); diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests.java b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests.java index 325bfd6149b..db945157026 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests.java +++ b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests.java @@ -43,7 +43,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Andy Wilkinson * @author Scott Frederick */ -@GradleCompatibility +@GradleCompatibility(minimumVersion = "8.3") class NativeImagePluginActionIntegrationTests { GradleBuild gradleBuild; @@ -111,7 +111,9 @@ class NativeImagePluginActionIntegrationTests { @TestTemplate void classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath() { - BuildResult result = this.gradleBuild.build("checkTestNativeImageClasspath"); + BuildResult result = this.gradleBuild + .scriptProperty("junitVersion", TestTemplate.class.getPackage().getImplementationVersion()) + .build("checkTestNativeImageClasspath"); assertThat(result.getOutput()).contains(projectPath("build/classes/java/aotTest"), projectPath("build/resources/aotTest"), projectPath("build/generated/aotTestClasses")); } diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath.gradle b/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath.gradle index cd47e3fc4c8..53e83ac1cf0 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath.gradle +++ b/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath.gradle @@ -25,6 +25,10 @@ repositories { mavenCentral() } +dependencies { + testImplementation("org.junit.jupiter:junit-jupiter:{junitVersion}") +} + task('checkTestNativeImageClasspath') { doFirst { tasks.nativeTestCompile.options.get().classpath.each { println it } diff --git a/gradle.properties b/gradle.properties index 40c2e0c564d..b891df8a3f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ junitJupiterVersion=5.13.4 kotlinVersion=2.2.0 mavenVersion=3.9.10 mockitoVersion=5.18.0 -nativeBuildToolsVersion=0.10.6 +nativeBuildToolsVersion=0.11.0 snakeYamlVersion=2.4 springFrameworkVersion=7.0.0-M7 springFramework60xVersion=6.0.23