From 25b72d66fce1e6e7768f5c23fae91c83e0ab156f Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 15 Apr 2025 10:58:38 +0100 Subject: [PATCH] Test Gradle plugin against 9.0.0-milestone-9 --- .../plugin/WarPluginActionIntegrationTests.java | 14 ++++++++++---- .../AbstractBootArchiveIntegrationTests.java | 2 ++ .../tasks/bundling/BootJarIntegrationTests.java | 2 ++ .../testsupport/gradle/testkit/GradleBuild.java | 4 ++++ .../testsupport/gradle/testkit/GradleVersions.java | 12 ++++++------ 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/WarPluginActionIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/WarPluginActionIntegrationTests.java index 09e23e284a..38d4d10bca 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/WarPluginActionIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/WarPluginActionIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,9 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.StringReader; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import org.gradle.testkit.runner.BuildResult; @@ -61,9 +63,13 @@ class WarPluginActionIntegrationTests { assertThat(result.task(":bootWar").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.task(":war").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs"); - assertThat(buildLibs.listFiles()).containsExactlyInAnyOrder( - new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".war"), - new File(buildLibs, this.gradleBuild.getProjectDir().getName() + "-plain.war")); + List expected = new ArrayList<>(); + expected.add(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".war")); + expected.add(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + "-plain.war")); + if (this.gradleBuild.gradleVersionIsAtLeast("9.0-milestone-2")) { + expected.add(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + "-plain.jar")); + } + assertThat(buildLibs.listFiles()).containsExactlyInAnyOrderElementsOf(expected); } @TestTemplate diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java index 4fb7f0ebf4..202172abf4 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java @@ -50,6 +50,7 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipFile; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.TaskOutcome; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.TestTemplate; import org.springframework.boot.loader.tools.FileUtils; @@ -597,6 +598,7 @@ abstract class AbstractBootArchiveIntegrationTests { @TestTemplate void dirModeAndFileModeAreApplied() throws IOException { + Assumptions.assumeTrue(this.gradleBuild.gradleVersionIsLessThan("9.0-milestone-1")); BuildResult result = this.gradleBuild.expectDeprecationWarningsWithAtLeastVersion("8.8-rc-1") .expectDeprecationMessages("The CopyProcessingSpec.setDirMode(Integer) method has been deprecated", "The CopyProcessingSpec.setFileMode(Integer) method has been deprecated", diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests.java index cf14bba28c..f03f733b8f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests.java @@ -25,6 +25,7 @@ import java.util.jar.JarFile; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.TaskOutcome; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.TestTemplate; import org.springframework.boot.gradle.junit.GradleCompatibility; @@ -56,6 +57,7 @@ class BootJarIntegrationTests extends AbstractBootArchiveIntegrationTests { @TestTemplate void whenAResolvableCopyOfAnUnresolvableConfigurationIsResolvedThenResolutionSucceeds() { + Assumptions.assumeTrue(this.gradleBuild.gradleVersionIsLessThan("9.0-milestone-1")); this.gradleBuild.expectDeprecationWarningsWithAtLeastVersion("8.0").build("build"); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleBuild.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleBuild.java index 5fb7f6ccf8..901ee096e0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleBuild.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleBuild.java @@ -134,6 +134,10 @@ public class GradleBuild { return GradleVersion.version(this.gradleVersion).compareTo(GradleVersion.version(version)) >= 0; } + public boolean gradleVersionIsLessThan(String version) { + return GradleVersion.version(this.gradleVersion).compareTo(GradleVersion.version(version)) < 0; + } + public BuildResult build(String... arguments) { try { BuildResult result = prepareRunner(arguments).build(); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java index 6d894460e7..c846364414 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,18 +34,18 @@ public final class GradleVersions { public static List allCompatible() { if (isJavaVersion(JavaVersion.VERSION_24)) { - return Arrays.asList(GradleVersion.current().getVersion()); + return Arrays.asList(GradleVersion.current().getVersion(), "9.0.0-milestone-9"); } if (isJavaVersion(JavaVersion.VERSION_23)) { - return Arrays.asList("8.10", GradleVersion.current().getVersion()); + return Arrays.asList(GradleVersion.current().getVersion(), "9.0.0-milestone-9"); } if (isJavaVersion(JavaVersion.VERSION_22)) { - return Arrays.asList("8.8", GradleVersion.current().getVersion()); + return Arrays.asList("8.8", GradleVersion.current().getVersion(), "9.0.0-milestone-9"); } if (isJavaVersion(JavaVersion.VERSION_21)) { - return Arrays.asList("8.5", GradleVersion.current().getVersion()); + return Arrays.asList("8.5", GradleVersion.current().getVersion(), "9.0.0-milestone-9"); } - return Arrays.asList("7.6.4", "8.4", GradleVersion.current().getVersion()); + return Arrays.asList("7.6.4", "8.4", GradleVersion.current().getVersion(), "9.0.0-milestone-9"); } public static String minimumCompatible() {