29
29
*/
30
30
package org .openjfx .gradle ;
31
31
32
+ import org .gradle .api .Project ;
32
33
import org .gradle .testfixtures .ProjectBuilder ;
33
34
import org .gradle .testkit .runner .BuildResult ;
34
35
import org .gradle .testkit .runner .GradleRunner ;
35
36
import org .gradle .testkit .runner .TaskOutcome ;
36
37
import org .junit .jupiter .api .Test ;
37
38
38
39
import java .io .File ;
40
+ import java .io .FileOutputStream ;
41
+ import java .io .IOException ;
42
+ import java .io .OutputStream ;
39
43
import java .lang .management .ManagementFactory ;
40
44
import java .util .Arrays ;
41
45
import java .util .List ;
46
+ import java .util .Properties ;
42
47
import java .util .stream .Collectors ;
43
48
44
49
import static org .junit .jupiter .api .Assertions .assertEquals ;
@@ -48,7 +53,7 @@ abstract class JavaFXPluginSmokeTest {
48
53
private static final String classifier ;
49
54
50
55
static {
51
- var p = ProjectBuilder .builder ().build ();
56
+ Project p = ProjectBuilder .builder ().build ();
52
57
p .getPlugins ().apply (JavaFXPlugin .class );
53
58
classifier = p .getExtensions ().getByType (JavaFXOptions .class ).getPlatform ().getClassifier ();
54
59
}
@@ -61,60 +66,60 @@ protected String modularApplicationRuntime() {
61
66
62
67
@ Test
63
68
void smokeTestModular () {
64
- var result = build (":modular:run" );
69
+ BuildResult result = buildWithJava11 (":modular:run" );
65
70
66
71
assertEquals (TaskOutcome .SUCCESS , result .task (":modular:run" ).getOutcome ());
67
72
68
- assertEquals (List . of ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" ), modulePath (result ).get (0 ));
69
- assertEquals (List . of ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , "modular.jar" ), modulePath (result ).get (1 ));
73
+ assertEquals (Arrays . asList ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" ), modulePath (result ).get (0 ));
74
+ assertEquals (Arrays . asList ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , "modular.jar" ), modulePath (result ).get (1 ));
70
75
71
- assertEquals (List . of (), compileClassPath (result ));
72
- assertEquals (List . of (), runtimeClassPath (result ));
76
+ assertEquals (Arrays . asList (), compileClassPath (result ));
77
+ assertEquals (Arrays . asList (), runtimeClassPath (result ));
73
78
}
74
79
75
80
@ Test
76
81
void smokeTestModularWithModularityPlugin () {
77
- var result = build (":modular-with-modularity-plugin:run" );
82
+ BuildResult result = buildWithJava11 (":modular-with-modularity-plugin:run" );
78
83
79
84
assertEquals (TaskOutcome .SUCCESS , result .task (":modular-with-modularity-plugin:run" ).getOutcome ());
80
85
81
- assertEquals (List . of ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" ), modulePath (result ).get (0 ));
82
- assertEquals (List . of ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , modularApplicationRuntime ()), modulePath (result ).get (1 ));
86
+ assertEquals (Arrays . asList ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" ), modulePath (result ).get (0 ));
87
+ assertEquals (Arrays . asList ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , modularApplicationRuntime ()), modulePath (result ).get (1 ));
83
88
84
- assertEquals (List . of (), compileClassPath (result ));
85
- assertEquals (List . of (), runtimeClassPath (result ));
89
+ assertEquals (Arrays . asList (), compileClassPath (result ));
90
+ assertEquals (Arrays . asList (), runtimeClassPath (result ));
86
91
}
87
92
88
93
@ Test
89
94
void smokeTestNonModular () {
90
- var result = build (":non-modular:run" );
95
+ BuildResult result = buildWithJava11 (":non-modular:run" );
91
96
92
97
assertEquals (TaskOutcome .SUCCESS , result .task (":non-modular:run" ).getOutcome ());
93
98
94
- assertEquals (List . of ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , "javafx-media-17-" + classifier + ".jar" , "javafx-web-17-" + classifier + ".jar" ), compileClassPath (result ).get (0 ));
95
- assertEquals (List . of ("main" , "main" ), runtimeClassPath (result ).get (0 ));
96
- assertEquals (List . of ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , "javafx-media-17-" + classifier + ".jar" , "javafx-web-17-" + classifier + ".jar" ), modulePath (result ).get (0 ));
99
+ assertEquals (Arrays . asList ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , "javafx-media-17-" + classifier + ".jar" , "javafx-web-17-" + classifier + ".jar" ), compileClassPath (result ).get (0 ));
100
+ assertEquals (Arrays . asList ("main" , "main" ), runtimeClassPath (result ).get (0 ));
101
+ assertEquals (Arrays . asList ("javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" , "javafx-media-17-" + classifier + ".jar" , "javafx-web-17-" + classifier + ".jar" ), modulePath (result ).get (0 ));
97
102
}
98
103
99
104
@ Test
100
105
void smokeTestTransitive () {
101
- var result = build (":transitive:run" );
106
+ BuildResult result = buildWithJava11 (":transitive:run" );
102
107
103
108
assertEquals (TaskOutcome .SUCCESS , result .task (":transitive:run" ).getOutcome ());
104
109
105
- assertEquals (List . of ("charts-17.1.41.jar" , "javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" ), compileClassPath (result ).get (0 ));
106
- assertEquals (List . of ("charts-17.1.41.jar" , "countries-17.0.29.jar" , "heatmap-17.0.17.jar" , "logback-classic-1.2.6.jar" , "logback-core-1.2.6.jar" , "main" , "main" , "slf4j-api-1.7.32.jar" , "toolbox-17.0.45.jar" , "toolboxfx-17.0.37.jar" ), runtimeClassPath (result ).get (0 ));
107
- assertEquals (List . of ("javafx-base-17.0.6-" + classifier + ".jar" , "javafx-controls-17.0.6-" + classifier + ".jar" , "javafx-graphics-17.0.6-" + classifier + ".jar" , "javafx-swing-17.0.6-" + classifier + ".jar" ), modulePath (result ).get (0 ));
110
+ assertEquals (Arrays . asList ("charts-17.1.41.jar" , "javafx-base-17-" + classifier + ".jar" , "javafx-controls-17-" + classifier + ".jar" , "javafx-graphics-17-" + classifier + ".jar" ), compileClassPath (result ).get (0 ));
111
+ assertEquals (Arrays . asList ("charts-17.1.41.jar" , "countries-17.0.29.jar" , "heatmap-17.0.17.jar" , "logback-classic-1.2.6.jar" , "logback-core-1.2.6.jar" , "main" , "main" , "slf4j-api-1.7.32.jar" , "toolbox-17.0.45.jar" , "toolboxfx-17.0.37.jar" ), runtimeClassPath (result ).get (0 ));
112
+ assertEquals (Arrays . asList ("javafx-base-17.0.6-" + classifier + ".jar" , "javafx-controls-17.0.6-" + classifier + ".jar" , "javafx-graphics-17.0.6-" + classifier + ".jar" , "javafx-swing-17.0.6-" + classifier + ".jar" ), modulePath (result ).get (0 ));
108
113
}
109
114
110
115
@ Test
111
116
void smokeTestLocalSdk () {
112
- var result = build (":local-sdk:build" ); // do not ':run', as it won't run on any platform
117
+ BuildResult result = buildWithJava11 (":local-sdk:build" ); // do not ':run', as it won't run on any platform
113
118
114
119
assertEquals (TaskOutcome .SUCCESS , result .task (":local-sdk:build" ).getOutcome ());
115
120
116
- assertEquals (List . of ("javafx.base.jar" , "javafx.controls.jar" , "javafx.graphics.jar" ), compileClassPath (result ).get (0 ));
117
- assertEquals (List . of (), modulePath (result ));
121
+ assertEquals (Arrays . asList ("javafx.base.jar" , "javafx.controls.jar" , "javafx.graphics.jar" ), compileClassPath (result ).get (0 ));
122
+ assertEquals (Arrays . asList (), modulePath (result ));
118
123
}
119
124
120
125
private static List <List <String >> modulePath (BuildResult result ) {
@@ -132,18 +137,33 @@ private static List<List<String>> runtimeClassPath(BuildResult result) {
132
137
private static List <List <String >> path (BuildResult result , String pathArg ) {
133
138
// Parse classpath or module path from Gradle's '--debug' output.
134
139
// The :compileJava and :run tasks log them on that logging level.
135
- return result .getOutput ().lines ( ).filter (l -> l .contains (pathArg )).map (l -> {
140
+ return Arrays . stream ( result .getOutput ().split ( " \r ? \n | \r " ) ).filter (l -> l .contains (pathArg )).map (l -> {
136
141
int pathArgIndex = l .indexOf (pathArg ) + pathArg .length ();
137
142
String pathString = l .substring (pathArgIndex , l .indexOf (" " , pathArgIndex ));
138
- if (pathString .isBlank ()) {
139
- return List .<String >of ();
143
+ if (pathString .trim (). isEmpty ()) {
144
+ return Arrays .<String >asList ();
140
145
}
141
146
String [] path = pathString .split (System .getProperty ("path.separator" ));
142
147
return Arrays .stream (path ).map (jar -> new File (jar ).getName ()).sorted ().collect (Collectors .toList ());
143
148
}).filter (p -> !p .isEmpty ()).collect (Collectors .toList ());
144
149
}
145
150
146
151
private BuildResult build (String task ) {
152
+ return build (task , new Properties ());
153
+ }
154
+
155
+ private BuildResult buildWithJava11 (String task ) {
156
+ Properties gradleProperties = new Properties ();
157
+ gradleProperties .setProperty ("org.gradle.java.home" , System .getProperty ("java11Home" ));
158
+ return build (task , gradleProperties );
159
+ }
160
+
161
+ private BuildResult build (String task , Properties gradleProperties ) {
162
+ try (OutputStream out = new FileOutputStream ("test-project/gradle.properties" )) {
163
+ gradleProperties .store (out , null );
164
+ } catch (IOException ioe ) {
165
+ throw new RuntimeException (ioe );
166
+ }
147
167
return GradleRunner .create ()
148
168
.withProjectDir (new File ("test-project" ))
149
169
.withGradleVersion (getGradleVersion ())
0 commit comments