23
23
import java .util .function .Supplier ;
24
24
import java .util .stream .Stream ;
25
25
26
+ import org .junit .Assume ;
26
27
import org .junit .jupiter .params .ParameterizedTest ;
27
28
import org .junit .jupiter .params .provider .MethodSource ;
28
29
import org .testcontainers .containers .GenericContainer ;
32
33
import org .testcontainers .utility .DockerImageName ;
33
34
import org .testcontainers .utility .MountableFile ;
34
35
36
+ import org .springframework .boot .system .JavaVersion ;
35
37
import org .springframework .util .Assert ;
36
38
37
39
import static org .assertj .core .api .Assertions .assertThat ;
@@ -48,6 +50,7 @@ class LoaderIntegrationTests {
48
50
@ ParameterizedTest
49
51
@ MethodSource ("javaRuntimes" )
50
52
void readUrlsWithoutWarning (JavaRuntime javaRuntime ) {
53
+ javaRuntime .assumeCompatible ();
51
54
try (GenericContainer <?> container = createContainer (javaRuntime )) {
52
55
container .start ();
53
56
System .out .println (this .output .toUtf8String ());
@@ -72,34 +75,50 @@ private File findApplication() {
72
75
73
76
static Stream <JavaRuntime > javaRuntimes () {
74
77
List <JavaRuntime > javaRuntimes = new ArrayList <>();
75
- javaRuntimes .add (JavaRuntime .openJdk ("8" ));
76
- javaRuntimes .add (JavaRuntime .openJdk ("11" ));
77
- javaRuntimes .add (JavaRuntime .openJdk ("17" ));
78
+ javaRuntimes .add (JavaRuntime .openJdk (JavaVersion . EIGHT ));
79
+ javaRuntimes .add (JavaRuntime .openJdk (JavaVersion . ELEVEN ));
80
+ javaRuntimes .add (JavaRuntime .openJdk (JavaVersion . SEVENTEEN ));
78
81
javaRuntimes .add (JavaRuntime .oracleJdk17 ());
79
82
return javaRuntimes .stream ();
80
83
}
81
84
82
85
static final class JavaRuntime {
83
86
87
+ private final String name ;
88
+
89
+ private final JavaVersion version ;
90
+
84
91
private final Supplier <GenericContainer <?>> container ;
85
92
86
- private JavaRuntime (Supplier <GenericContainer <?>> container ) {
93
+ private JavaRuntime (String name , JavaVersion version , Supplier <GenericContainer <?>> container ) {
94
+ this .name = name ;
95
+ this .version = version ;
87
96
this .container = container ;
88
97
}
89
98
99
+ private void assumeCompatible () {
100
+ Assume .assumeTrue (JavaVersion .getJavaVersion ().isEqualOrNewerThan (this .version ));
101
+ }
102
+
90
103
GenericContainer <?> getContainer () {
91
104
return this .container .get ();
92
105
}
93
106
94
- static JavaRuntime openJdk (String version ) {
95
- DockerImageName image = DockerImageName .parse ("bellsoft/liberica-openjdk-debian:" + version );
96
- return new JavaRuntime (() -> new GenericContainer <>(image ));
107
+ @ Override
108
+ public String toString () {
109
+ return this .name ;
110
+ }
111
+
112
+ static JavaRuntime openJdk (JavaVersion version ) {
113
+ String imageVersion = (version != JavaVersion .EIGHT ) ? version .toString () : "8" ;
114
+ DockerImageName image = DockerImageName .parse ("bellsoft/liberica-openjdk-debian:" + imageVersion );
115
+ return new JavaRuntime ("OpenJDK " + imageVersion , version , () -> new GenericContainer <>(image ));
97
116
}
98
117
99
118
static JavaRuntime oracleJdk17 () {
100
119
ImageFromDockerfile image = new ImageFromDockerfile ("spring-boot-loader/oracle-jdk-17" )
101
120
.withFileFromFile ("Dockerfile" , new File ("src/intTest/resources/conf/oracle-jdk-17/Dockerfile" ));
102
- return new JavaRuntime (() -> new GenericContainer <>(image ));
121
+ return new JavaRuntime ("Oracle JDK 17" , JavaVersion . SEVENTEEN , () -> new GenericContainer <>(image ));
103
122
}
104
123
105
124
}
0 commit comments