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)
+}