Skip to content

Commit d052e99

Browse files
committed
Fix - support jvmRunEnvironment request for native launcher of scala-cli
1 parent 694df1d commit d052e99

File tree

5 files changed

+59
-6
lines changed

5 files changed

+59
-6
lines changed

modules/build/src/test/scala/scala/build/tests/SourceGeneratorTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ class SourceGeneratorTests extends munit.FunSuite {
149149
|}
150150
|""".stripMargin
151151
)
152+
}
152153
}
153-
}
154154

155155
}
156156

modules/cli/src/main/resources/META-INF/native-image/org.virtuslab/scala-cli-core/reflect-config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,14 @@
307307
"allDeclaredMethods": true,
308308
"allDeclaredFields": true
309309
},
310+
{
311+
"name": "ch.epfl.scala.bsp4j.JvmMainClass",
312+
"queryAllDeclaredMethods": true,
313+
"allDeclaredConstructors": true,
314+
"allPublicConstructors": true,
315+
"allDeclaredMethods": true,
316+
"allDeclaredFields": true
317+
},
310318
{
311319
"name": "ch.epfl.scala.bsp4j.JvmRunEnvironmentParams",
312320
"allDeclaredConstructors": true,

modules/integration/src/test/scala/scala/cli/integration/BspTestDefinitions.scala

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package scala.cli.integration
22

3-
import ch.epfl.scala.bsp4j.BuildTargetIdentifier
3+
import ch.epfl.scala.bsp4j.{BuildTargetIdentifier, JvmTestEnvironmentParams}
44
import ch.epfl.scala.bsp4j as b
55
import com.eed3si9n.expecty.Expecty.expect
66
import com.github.plokhotnyuk.jsoniter_scala.core.*
@@ -84,7 +84,7 @@ abstract class BspTestDefinitions(val scalaVersionOpt: Option[String])
8484
f: (
8585
os.Path,
8686
TestBspClient,
87-
b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer
87+
b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer & b.JvmBuildServer
8888
) => Future[T]
8989
): T = {
9090

@@ -96,7 +96,8 @@ abstract class BspTestDefinitions(val scalaVersionOpt: Option[String])
9696

9797
val proc = os.proc(TestUtil.cli, "bsp", bspOptions ++ extraOptions, args)
9898
.spawn(cwd = root, stderr = stderr)
99-
var remoteServer: b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer = null
99+
var remoteServer: b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer & b.JvmBuildServer =
100+
null
100101

101102
val bspServerExited = Promise[Unit]()
102103
val t = new Thread("bsp-server-watcher") {
@@ -1364,6 +1365,40 @@ abstract class BspTestDefinitions(val scalaVersionOpt: Option[String])
13641365
}
13651366
}
13661367
}
1368+
test("bsp should support jvmRunEnvironment request") {
1369+
val inputs = TestInputs(
1370+
os.rel / "Hello.scala" ->
1371+
s"""//> using dep "com.lihaoyi::os-lib:0.7.8"
1372+
|
1373+
|object Hello extends App {
1374+
| println("Hello")
1375+
|}
1376+
|""".stripMargin
1377+
)
1378+
withBsp(inputs, Seq(".")) {
1379+
(_, _, remoteServer) =>
1380+
async {
1381+
// prepare build
1382+
val buildTargetsResp = await(remoteServer.workspaceBuildTargets().asScala)
1383+
// build code
1384+
val targets = buildTargetsResp.getTargets.asScala.map(_.getId()).asJava
1385+
1386+
val jvmRunEnvironmentResult: b.JvmRunEnvironmentResult = await {
1387+
remoteServer
1388+
.jvmRunEnvironment(new b.JvmRunEnvironmentParams(targets))
1389+
.asScala
1390+
}
1391+
expect(jvmRunEnvironmentResult.getItems.asScala.toList.nonEmpty)
1392+
1393+
val jvmTestEnvironmentResult: b.JvmTestEnvironmentResult = await {
1394+
remoteServer
1395+
.jvmTestEnvironment(new JvmTestEnvironmentParams(targets))
1396+
.asScala
1397+
}
1398+
expect(jvmTestEnvironmentResult.getItems.asScala.toList.nonEmpty)
1399+
}
1400+
}
1401+
}
13671402

13681403
if (actualScalaVersion.startsWith("3"))
13691404
test("@main in script") {

modules/integration/src/test/scala/scala/cli/integration/RunScalaJsTestDefinitions.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ trait RunScalaJsTestDefinitions { _: RunTestDefinitions =>
4444
)
4545
inputs.fromRoot { root =>
4646
val thrown = os.proc(TestUtil.cli, extraOptions, fileName, "--js", "--server=false")
47-
.call(cwd = root, env = Map("PATH" -> "", "PATHEXT" -> ""), check = false, mergeErrIntoOut = true)
47+
.call(
48+
cwd = root,
49+
env = Map("PATH" -> "", "PATHEXT" -> ""),
50+
check = false,
51+
mergeErrIntoOut = true
52+
)
4853
val output = thrown.out.trim()
4954

5055
assert(thrown.exitCode == 1)

modules/integration/src/test/scala/scala/cli/integration/TestBspClient.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,17 @@ class TestBspClient extends b.BuildClient {
9696
object TestBspClient {
9797

9898
private trait BuildServer extends b.BuildServer with b.ScalaBuildServer with b.JavaBuildServer
99+
with b.JvmBuildServer
99100

100101
def connect(
101102
in: InputStream,
102103
out: OutputStream,
103104
es: ExecutorService
104-
): (TestBspClient, b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer, Future[Unit]) = {
105+
): (
106+
TestBspClient,
107+
b.BuildServer & b.ScalaBuildServer & b.JavaBuildServer & b.JvmBuildServer,
108+
Future[Unit]
109+
) = {
105110

106111
val localClient = new TestBspClient
107112

0 commit comments

Comments
 (0)