From c3e1e8b2baed50629d6621f0d8b319695e14d3f4 Mon Sep 17 00:00:00 2001 From: Katarzyna Marek <kasia@marek.net> Date: Tue, 7 May 2024 13:21:18 +0200 Subject: [PATCH] fix: import from build tools, that aren't build server providers when `defaultBspToBuildTool` set to `true` --- .../internal/metals/MetalsLspService.scala | 5 ++--- .../scala/tests/PreferredBuildServer.scala | 21 +++++++++++++++++++ .../scala/tests/maven/MavenLspSuite.scala | 17 ++++++++------- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala b/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala index 37b2c93b331..d928270cf26 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/MetalsLspService.scala @@ -2141,10 +2141,9 @@ class MetalsLspService( forceImport: Boolean ): Future[BuildChange] = { val chosenBuildServer = tables.buildServers.selectedServer() - def useBuildToolBsp(buildTool: BuildTool) = + def useBuildToolBsp(buildTool: BloopInstallProvider) = buildTool match { - case _: BloopInstallProvider => userConfig.defaultBspToBuildTool - case _: BuildServerProvider => true + case _: BuildServerProvider => userConfig.defaultBspToBuildTool case _ => false } diff --git a/tests/slow/src/test/scala/tests/PreferredBuildServer.scala b/tests/slow/src/test/scala/tests/PreferredBuildServer.scala index f95ca2a10e7..d837f758feb 100644 --- a/tests/slow/src/test/scala/tests/PreferredBuildServer.scala +++ b/tests/slow/src/test/scala/tests/PreferredBuildServer.scala @@ -4,6 +4,8 @@ import scala.meta.internal.metals.Messages import scala.meta.internal.metals.UserConfiguration import scala.meta.internal.metals.{BuildInfo => V} +import tests.maven.MavenLspSuite.defaultPom + class PreferredBuildServer extends BaseLspSuite("preferred-build-server") { override def userConfig: UserConfiguration = super.userConfig.copy(defaultBspToBuildTool = true) @@ -77,4 +79,23 @@ class PreferredBuildServer extends BaseLspSuite("preferred-build-server") { _ = assert(server.server.bspSession.exists(_.main.isSbt)) } yield () } + + test("no-change-in-behavior-for-maven") { + cleanWorkspace() + val fileLayout = + s"""|/pom.xml + |$defaultPom + |/src/main/scala/A.scala + | + |""".stripMargin + FileLayout.fromString(fileLayout, workspace) + for { + _ <- server.initialize() + _ <- server.initialized() + _ = assertNoDiff( + client.workspaceMessageRequests, + Messages.ImportBuild.params("Maven").getMessage, + ) + } yield () + } } diff --git a/tests/slow/src/test/scala/tests/maven/MavenLspSuite.scala b/tests/slow/src/test/scala/tests/maven/MavenLspSuite.scala index 35e8af70de7..5a24ad3c21e 100644 --- a/tests/slow/src/test/scala/tests/maven/MavenLspSuite.scala +++ b/tests/slow/src/test/scala/tests/maven/MavenLspSuite.scala @@ -15,18 +15,12 @@ import scala.meta.io.AbsolutePath import ch.epfl.scala.bsp4j.DebugSessionParamsDataKind import ch.epfl.scala.bsp4j.ScalaMainClass import tests.BaseImportSuite +import tests.maven.MavenLspSuite.defaultPom class MavenLspSuite extends BaseImportSuite("maven-import") { def buildTool: MavenBuildTool = MavenBuildTool(() => userConfig, workspace) - val defaultPom: String = new String( - InputStreamIO.readBytes( - this.getClass.getResourceAsStream("/test-pom.xml") - ), - StandardCharsets.UTF_8, - ).replace("<<>>", V.scala213) - override def currentDigest( workspace: AbsolutePath ): Option[String] = MavenDigest.current(workspace) @@ -254,3 +248,12 @@ class MavenLspSuite extends BaseImportSuite("maven-import") { } } + +object MavenLspSuite { + val defaultPom: String = new String( + InputStreamIO.readBytes( + this.getClass.getResourceAsStream("/test-pom.xml") + ), + StandardCharsets.UTF_8, + ).replace("<<>>", V.scala213) +}