@@ -1160,6 +1160,145 @@ abstract class BspTestDefinitions(val scalaVersionOpt: Option[String])
1160
1160
}
1161
1161
}
1162
1162
1163
+ test(" workspace/reload should restart bloop with correct JVM version from options" ) {
1164
+ val sourceFilePath = os.rel / " ReloadTest.java"
1165
+ val inputs = TestInputs (
1166
+ sourceFilePath ->
1167
+ s """ public class ReloadTest {
1168
+ | public static void main(String[] args) {
1169
+ | String a = "Hello World";
1170
+ |
1171
+ | switch (a) {
1172
+ | case String s when s.length() > 6 -> System.out.println(s.toUpperCase());
1173
+ | case String s -> System.out.println(s.toLowerCase());
1174
+ | }
1175
+ | }
1176
+ |} """ .stripMargin
1177
+ )
1178
+ inputs.fromRoot { root =>
1179
+ os.proc(TestUtil .cli, " --power" , " bloop" , " exit" )
1180
+ .call(
1181
+ cwd = root,
1182
+ stdout = os.Inherit
1183
+ )
1184
+ os.proc(TestUtil .cli, " setup-ide" , " ." , " --jvm" , " 11" , extraOptions)
1185
+ .call(
1186
+ cwd = root,
1187
+ stdout = os.Inherit
1188
+ )
1189
+ val ideOptionsPath = root / Constants .workspaceDirName / " ide-options-v2.json"
1190
+ val jsonOptions = List (" --json-options" , ideOptionsPath.toString)
1191
+ withBsp(inputs, Seq (" ." ), bspOptions = jsonOptions, reuseRoot = Some (root)) {
1192
+ (_, _, remoteServer) =>
1193
+ async {
1194
+ val buildTargetsResp = await(remoteServer.workspaceBuildTargets().asScala)
1195
+ val targets = buildTargetsResp.getTargets.asScala.map(_.getId).toSeq
1196
+
1197
+ val errorResponse =
1198
+ await(remoteServer.buildTargetCompile(new b.CompileParams (targets.asJava)).asScala)
1199
+ expect(errorResponse.getStatusCode == b.StatusCode .ERROR )
1200
+
1201
+ val javacOptions = Seq (" --javac-opt" , " --enable-preview" )
1202
+
1203
+ os.proc(TestUtil .cli, " setup-ide" , " ." , " --jvm" , " 19" , javacOptions, extraOptions)
1204
+ .call(
1205
+ cwd = root,
1206
+ stdout = os.Inherit
1207
+ )
1208
+
1209
+ val reloadResponse =
1210
+ extractWorkspaceReloadResponse(await(remoteServer.workspaceReload().asScala))
1211
+ expect(reloadResponse.isEmpty)
1212
+
1213
+ val buildTargetsResp0 = await(remoteServer.workspaceBuildTargets().asScala)
1214
+ val reloadedTargets = buildTargetsResp0.getTargets.asScala.map(_.getId).toSeq
1215
+
1216
+ val okResponse =
1217
+ await(
1218
+ remoteServer.buildTargetCompile(new b.CompileParams (reloadedTargets.asJava)).asScala
1219
+ )
1220
+ expect(okResponse.getStatusCode == b.StatusCode .OK )
1221
+ }
1222
+ }
1223
+
1224
+ }
1225
+ }
1226
+
1227
+ test(" workspace/reload should restart bloop with correct JVM version from directives" ) {
1228
+ val sourceFilePath = os.rel / " ReloadTest.java"
1229
+ val inputs = TestInputs (
1230
+ sourceFilePath ->
1231
+ s """ //> using jvm 11
1232
+ |
1233
+ |public class ReloadTest {
1234
+ | public static void main(String[] args) {
1235
+ | System.out.println("Hello World");
1236
+ | }
1237
+ |}
1238
+ | """ .stripMargin
1239
+ )
1240
+ inputs.fromRoot { root =>
1241
+ os.proc(TestUtil .cli, " --power" , " bloop" , " exit" )
1242
+ .call(
1243
+ cwd = root,
1244
+ stdout = os.Inherit
1245
+ )
1246
+ os.proc(TestUtil .cli, " setup-ide" , " ." , extraOptions)
1247
+ .call(
1248
+ cwd = root,
1249
+ stdout = os.Inherit
1250
+ )
1251
+ val ideOptionsPath = root / Constants .workspaceDirName / " ide-options-v2.json"
1252
+ val jsonOptions = List (" --json-options" , ideOptionsPath.toString)
1253
+ withBsp(inputs, Seq (" ." ), bspOptions = jsonOptions, reuseRoot = Some (root)) {
1254
+ (_, _, remoteServer) =>
1255
+ async {
1256
+ val buildTargetsResp = await(remoteServer.workspaceBuildTargets().asScala)
1257
+ val targets = buildTargetsResp.getTargets.asScala.map(_.getId).toSeq
1258
+
1259
+ val resp =
1260
+ await(remoteServer.buildTargetCompile(new b.CompileParams (targets.asJava)).asScala)
1261
+ expect(resp.getStatusCode == b.StatusCode .OK )
1262
+
1263
+ val updatedSourceFile =
1264
+ s """ //> using jvm 19
1265
+ |//> using javacOpt --enable-preview
1266
+ |
1267
+ |public class ReloadTest {
1268
+ | public static void main(String[] args) {
1269
+ | String a = "Hello World";
1270
+ |
1271
+ | switch (a) {
1272
+ | case String s when s.length() > 6 -> System.out.println(s.toUpperCase());
1273
+ | case String s -> System.out.println(s.toLowerCase());
1274
+ | }
1275
+ | }
1276
+ |}
1277
+ | """ .stripMargin
1278
+ os.write.over(root / sourceFilePath, updatedSourceFile)
1279
+
1280
+ val errorResponse =
1281
+ await(remoteServer.buildTargetCompile(new b.CompileParams (targets.asJava)).asScala)
1282
+ expect(errorResponse.getStatusCode == b.StatusCode .ERROR )
1283
+
1284
+ val reloadResponse =
1285
+ extractWorkspaceReloadResponse(await(remoteServer.workspaceReload().asScala))
1286
+ expect(reloadResponse.isEmpty)
1287
+
1288
+ val buildTargetsResp0 = await(remoteServer.workspaceBuildTargets().asScala)
1289
+ val reloadedTargets = buildTargetsResp0.getTargets.asScala.map(_.getId).toSeq
1290
+
1291
+ val okResponse =
1292
+ await(
1293
+ remoteServer.buildTargetCompile(new b.CompileParams (reloadedTargets.asJava)).asScala
1294
+ )
1295
+ expect(okResponse.getStatusCode == b.StatusCode .OK )
1296
+ }
1297
+ }
1298
+
1299
+ }
1300
+ }
1301
+
1163
1302
test(" bsp should start bloop with correct JVM version from directives" ) {
1164
1303
val sourceFilePath = os.rel / " ReloadTest.java"
1165
1304
val inputs = TestInputs (
0 commit comments