Commit 6bf33774 authored by Stephane Nicoll's avatar Stephane Nicoll

Fix ConditionalOnJavaTests with Java 9

See gh-7226
parent 1403ff1b
...@@ -29,6 +29,8 @@ import org.junit.Test; ...@@ -29,6 +29,8 @@ import org.junit.Test;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava.Range; import org.springframework.boot.autoconfigure.condition.ConditionalOnJava.Range;
import org.springframework.boot.system.JavaVersion; import org.springframework.boot.system.JavaVersion;
import org.springframework.boot.test.Assume;
import org.springframework.boot.test.context.HideClassesClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -50,6 +52,7 @@ public class ConditionalOnJavaTests { ...@@ -50,6 +52,7 @@ public class ConditionalOnJavaTests {
@Test @Test
public void doesNotMatchIfBetterVersionIsRequired() { public void doesNotMatchIfBetterVersionIsRequired() {
Assume.javaVersion(JavaVersion.EIGHT);
this.contextRunner.withUserConfiguration(Java9Required.class) this.contextRunner.withUserConfiguration(Java9Required.class)
.run((context) -> assertThat(context).doesNotHaveBean(String.class)); .run((context) -> assertThat(context).doesNotHaveBean(String.class));
} }
...@@ -94,18 +97,19 @@ public class ConditionalOnJavaTests { ...@@ -94,18 +97,19 @@ public class ConditionalOnJavaTests {
@Test @Test
public void java8IsDetected() throws Exception { public void java8IsDetected() throws Exception {
Assume.javaVersion(JavaVersion.EIGHT);
assertThat(getJavaVersion()).isEqualTo("1.8"); assertThat(getJavaVersion()).isEqualTo("1.8");
} }
@Test @Test
public void java8IsTheFallback() throws Exception { public void java8IsTheFallback() throws Exception {
Assume.javaVersion(JavaVersion.EIGHT);
assertThat(getJavaVersion(Function.class, Files.class, ServiceLoader.class)) assertThat(getJavaVersion(Function.class, Files.class, ServiceLoader.class))
.isEqualTo("1.8"); .isEqualTo("1.8");
} }
private String getJavaVersion(Class<?>... hiddenClasses) throws Exception { private String getJavaVersion(Class<?>... hiddenClasses) throws Exception {
URL[] urls = ((URLClassLoader) getClass().getClassLoader()).getURLs(); HideClassesClassLoader classLoader = new HideClassesClassLoader(hiddenClasses);
URLClassLoader classLoader = new ClassHidingClassLoader(urls, hiddenClasses);
Class<?> javaVersionClass = classLoader Class<?> javaVersionClass = classLoader
.loadClass(JavaVersion.class.getName()); .loadClass(JavaVersion.class.getName());
Method getJavaVersionMethod = ReflectionUtils.findMethod(javaVersionClass, Method getJavaVersionMethod = ReflectionUtils.findMethod(javaVersionClass,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment