From c828521912a590a30b785b9b124a2c02ca4d3e08 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 1 Oct 2020 15:16:07 +0100 Subject: [PATCH] Allow tests to provide properties that modify the build.gradle script See gh-22922 --- .../boot/gradle/testkit/GradleBuild.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/testkit/GradleBuild.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/testkit/GradleBuild.java index 1f9a3da743..439e6d661d 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/testkit/GradleBuild.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/testkit/GradleBuild.java @@ -24,7 +24,10 @@ import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.jar.JarFile; import com.fasterxml.jackson.annotation.JsonView; @@ -74,8 +77,12 @@ public class GradleBuild { private boolean configurationCache = false; + private Map scriptProperties = new HashMap<>(); + public GradleBuild() { this(Dsl.GROOVY); + this.scriptProperties.put("bootVersion", getBootVersion()); + this.scriptProperties.put("dependencyManagementPluginVersion", getDependencyManagementPluginVersion()); } public GradleBuild(Dsl dsl) { @@ -131,6 +138,11 @@ public class GradleBuild { return this; } + public GradleBuild scriptProperty(String key, String value) { + this.scriptProperties.put(key, value); + return this; + } + public BuildResult build(String... arguments) { try { BuildResult result = prepareRunner(arguments).build(); @@ -155,9 +167,10 @@ public class GradleBuild { } public GradleRunner prepareRunner(String... arguments) throws IOException { - String scriptContent = FileCopyUtils.copyToString(new FileReader(this.script)) - .replace("{version}", getBootVersion()) - .replace("{dependency-management-plugin-version}", getDependencyManagementPluginVersion()); + String scriptContent = FileCopyUtils.copyToString(new FileReader(this.script)); + for (Entry property : this.scriptProperties.entrySet()) { + scriptContent = scriptContent.replace("{" + property.getKey() + "}", property.getValue()); + } FileCopyUtils.copy(scriptContent, new FileWriter(new File(this.projectDir, "build" + this.dsl.getExtension()))); FileSystemUtils.copyRecursively(new File("src/test/resources/repository"), new File(this.projectDir, "repository"));