2929 */
3030package org .openjfx .gradle ;
3131
32+ import org .gradle .api .Project ;
3233import org .gradle .testfixtures .ProjectBuilder ;
3334import org .gradle .testkit .runner .BuildResult ;
3435import org .gradle .testkit .runner .GradleRunner ;
3536import org .gradle .testkit .runner .TaskOutcome ;
3637import org .junit .jupiter .api .Test ;
3738
3839import java .io .File ;
40+ import java .io .FileOutputStream ;
41+ import java .io .IOException ;
42+ import java .io .OutputStream ;
3943import java .lang .management .ManagementFactory ;
4044import java .util .Arrays ;
4145import java .util .List ;
46+ import java .util .Properties ;
4247import java .util .stream .Collectors ;
4348
4449import static org .junit .jupiter .api .Assertions .assertEquals ;
@@ -48,7 +53,7 @@ abstract class JavaFXPluginSmokeTest {
4853 private static final String classifier ;
4954
5055 static {
51- var p = ProjectBuilder .builder ().build ();
56+ Project p = ProjectBuilder .builder ().build ();
5257 p .getPlugins ().apply (JavaFXPlugin .class );
5358 classifier = p .getExtensions ().getByType (JavaFXOptions .class ).getPlatform ().getClassifier ();
5459 }
@@ -61,60 +66,60 @@ protected String modularApplicationRuntime() {
6166
6267 @ Test
6368 void smokeTestModular () {
64- var result = build (":modular:run" );
69+ BuildResult result = buildWithJava11 (":modular:run" );
6570
6671 assertEquals (TaskOutcome .SUCCESS , result .task (":modular:run" ).getOutcome ());
6772
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 ));
7075
71- assertEquals (List . of (), compileClassPath (result ));
72- assertEquals (List . of (), runtimeClassPath (result ));
76+ assertEquals (Arrays . asList (), compileClassPath (result ));
77+ assertEquals (Arrays . asList (), runtimeClassPath (result ));
7378 }
7479
7580 @ Test
7681 void smokeTestModularWithModularityPlugin () {
77- var result = build (":modular-with-modularity-plugin:run" );
82+ BuildResult result = buildWithJava11 (":modular-with-modularity-plugin:run" );
7883
7984 assertEquals (TaskOutcome .SUCCESS , result .task (":modular-with-modularity-plugin:run" ).getOutcome ());
8085
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 ));
8388
84- assertEquals (List . of (), compileClassPath (result ));
85- assertEquals (List . of (), runtimeClassPath (result ));
89+ assertEquals (Arrays . asList (), compileClassPath (result ));
90+ assertEquals (Arrays . asList (), runtimeClassPath (result ));
8691 }
8792
8893 @ Test
8994 void smokeTestNonModular () {
90- var result = build (":non-modular:run" );
95+ BuildResult result = buildWithJava11 (":non-modular:run" );
9196
9297 assertEquals (TaskOutcome .SUCCESS , result .task (":non-modular:run" ).getOutcome ());
9398
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 ));
97102 }
98103
99104 @ Test
100105 void smokeTestTransitive () {
101- var result = build (":transitive:run" );
106+ BuildResult result = buildWithJava11 (":transitive:run" );
102107
103108 assertEquals (TaskOutcome .SUCCESS , result .task (":transitive:run" ).getOutcome ());
104109
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 ));
108113 }
109114
110115 @ Test
111116 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
113118
114119 assertEquals (TaskOutcome .SUCCESS , result .task (":local-sdk:build" ).getOutcome ());
115120
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 ));
118123 }
119124
120125 private static List <List <String >> modulePath (BuildResult result ) {
@@ -132,18 +137,33 @@ private static List<List<String>> runtimeClassPath(BuildResult result) {
132137 private static List <List <String >> path (BuildResult result , String pathArg ) {
133138 // Parse classpath or module path from Gradle's '--debug' output.
134139 // 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 -> {
136141 int pathArgIndex = l .indexOf (pathArg ) + pathArg .length ();
137142 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 ();
140145 }
141146 String [] path = pathString .split (System .getProperty ("path.separator" ));
142147 return Arrays .stream (path ).map (jar -> new File (jar ).getName ()).sorted ().collect (Collectors .toList ());
143148 }).filter (p -> !p .isEmpty ()).collect (Collectors .toList ());
144149 }
145150
146151 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+ }
147167 return GradleRunner .create ()
148168 .withProjectDir (new File ("test-project" ))
149169 .withGradleVersion (getGradleVersion ())
0 commit comments