[BSP] Fix importing Optional project dependency

This commit is contained in:
Adrien Piquerez 2024-05-21 15:56:37 +02:00
parent b27c7253b1
commit f990bd2d8d
3 changed files with 18 additions and 7 deletions

View File

@ -13,7 +13,9 @@ import sbt.Keys._
private[sbt] object InternalDependencies {
def configurations: Def.Initialize[Seq[(ProjectRef, Set[String])]] = Def.setting {
val allConfigs = Classpaths.allConfigs(configuration.value).map(_.name).toSet
val configMap = internalConfigurationMap.value
val config = configMap(configuration.value)
val allConfigs = Classpaths.allConfigs(config).map(_.name).toSet
val ref = thisProjectRef.value
val projectDependencies = buildDependencies.value.classpath.get(ref).toSeq.flatten
val applicableConfigs = allConfigs + "*"

View File

@ -12,7 +12,7 @@ lazy val runAndTest = project.in(file("run-and-test"))
Test / javaOptions := Vector("Xmx512M"),
Test / envVars := Map("KEY_TEST" -> "VALUE_TEST"),
)
.dependsOn(util)
.dependsOn(util % Optional)
lazy val reportError = project.in(file("report-error"))

View File

@ -43,8 +43,12 @@ object BuildServerTest extends AbstractServerTest {
test("workspace/buildTargets") { _ =>
sendRequest("workspace/buildTargets")
val result = svr.waitFor[WorkspaceBuildTargetsResult](10.seconds)
val utilTarget = result.targets.find(_.displayName.contains("util")).get
val utilTargetIdentifier = BuildTargetIdentifier(buildTargetUri("util", "Compile"))
val utilTarget = result.targets.find(_.id == utilTargetIdentifier).get
assert(utilTarget.id.uri.toString.endsWith("#util/Compile"))
val runAndTestTarget = result.targets.find(_.displayName.contains("runAndTest")).get
// runAndTest should declare the dependency to util even if optional
assert(runAndTestTarget.dependencies.contains(utilTargetIdentifier))
val buildServerBuildTarget =
result.targets.find(_.displayName.contains("buildserver-build")).get
assert(buildServerBuildTarget.id.uri.toString.endsWith("#buildserver-build"))
@ -233,14 +237,19 @@ object BuildServerTest extends AbstractServerTest {
}
test("buildTarget/scalacOptions, buildTarget/javacOptions") { _ =>
val buildTarget = buildTargetUri("util", "Compile")
val badBuildTarget = buildTargetUri("badBuildTarget", "Compile")
val buildTargets = Seq(
buildTargetUri("util", "Compile"),
buildTargetUri("badBuildTarget", "Compile"),
)
val id1 = scalacOptions(Seq(buildTarget, badBuildTarget))
val id1 = scalacOptions(buildTargets)
assertMessage(s""""id":"$id1"""", "scala-library-2.13.11.jar")()
val id2 = javacOptions(Seq(buildTarget, badBuildTarget))
val id2 = javacOptions(buildTargets)
assertMessage(s""""id":"$id2"""", "scala-library-2.13.11.jar")()
val id3 = scalacOptions(Seq(buildTargetUri("runAndTest", "Compile")))
assertMessage(s""""id":"$id3"""", "util/target/scala-2.13/classes")()
}
test("buildTarget/cleanCache") { _ =>