Browse Source

Merge branch '3.3.x'

pull/42471/head
Phillip Webb 1 year ago
parent
commit
7fe7c61e7f
  1. 15
      buildSrc/SpringRepositorySupport.groovy
  2. 19
      spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleBuildExtension.java
  3. 1
      spring-boot-system-tests/spring-boot-image-tests/src/systemTest/resources/org/springframework/boot/image/paketo/settings.gradle

15
buildSrc/SpringRepositorySupport.groovy

@ -36,8 +36,19 @@ def apply(settings) { @@ -36,8 +36,19 @@ def apply(settings) {
}
private def property(settings, name) {
def parentValue = settings.gradle.parent?.rootProject?.findProperty(name)
return (parentValue != null) ? parentValue : settings.ext[name]
def value = settings.gradle.parent?.rootProject?.findProperty(name)
value = (value != null) ? value : settings.ext.find(name)
value = (value != null) ? value : loadProperty(settings, name)
return value
}
private def loadProperty(settings, name) {
def scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
new File(scriptDir, "../gradle.properties").withInputStream {
def properties = new Properties()
properties.load(it)
return properties.get(name)
}
}
return this

19
spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleBuildExtension.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.boot.testsupport.gradle.testkit;
import java.io.File;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.regex.Pattern;
@ -25,6 +26,7 @@ import org.junit.jupiter.api.extension.BeforeEachCallback; @@ -25,6 +26,7 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.Extension;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.springframework.util.Assert;
import org.springframework.util.ReflectionUtils;
/**
@ -43,6 +45,7 @@ public class GradleBuildExtension implements BeforeEachCallback, AfterEachCallba @@ -43,6 +45,7 @@ public class GradleBuildExtension implements BeforeEachCallback, AfterEachCallba
@Override
public void beforeEach(ExtensionContext context) throws Exception {
GradleBuild gradleBuild = extractGradleBuild(context);
gradleBuild.scriptProperty("parentRootDir", findParentRootDir().getAbsolutePath());
URL scriptUrl = findDefaultScript(context);
if (scriptUrl != null) {
gradleBuild.script(scriptUrl.getFile());
@ -54,6 +57,22 @@ public class GradleBuildExtension implements BeforeEachCallback, AfterEachCallba @@ -54,6 +57,22 @@ public class GradleBuildExtension implements BeforeEachCallback, AfterEachCallba
gradleBuild.before();
}
private File findParentRootDir() {
File dir = new File("").getAbsoluteFile();
int depth = 0;
while (dir != null && !hasGradleBuildFiles(dir)) {
Assert.state(depth++ < 5, "Unable to find parent root");
dir = dir.getParentFile();
}
Assert.state(dir != null, "Unable to find parent root");
return dir;
}
private boolean hasGradleBuildFiles(File dir) {
return new File(dir, "settings.gradle").exists() && new File(dir, "build.gradle").exists()
&& new File(dir, "gradle.properties").exists();
}
private GradleBuild extractGradleBuild(ExtensionContext context) throws Exception {
Object testInstance = context.getRequiredTestInstance();
Field gradleBuildField = ReflectionUtils.findField(testInstance.getClass(), "gradleBuild");

1
spring-boot-system-tests/spring-boot-image-tests/src/systemTest/resources/org/springframework/boot/image/paketo/settings.gradle

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
pluginManagement {
evaluate(new File("{parentRootDir}/buildSrc/SpringRepositorySupport.groovy")).apply(this)
repositories {
exclusiveContent {
forRepository {

Loading…
Cancel
Save