Skip to content
This repository was archived by the owner on Aug 5, 2024. It is now read-only.

Commit 84c4f9a

Browse files
xuansontrinhSpace Team
authored andcommitted
[fix] allow aspects to be injected normally when users enable bzlmod. | #BAZEL-698 Done
Merge-request: BAZEL-MR-574 Merged-by: Xuan Son Trinh <[email protected]>
1 parent bfedbd4 commit 84c4f9a

File tree

5 files changed

+33
-7
lines changed

5 files changed

+33
-7
lines changed

server/src/main/kotlin/org/jetbrains/bsp/bazel/server/bsp/utils/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ kt_jvm_library(
88
]),
99
visibility = ["//server:__subpackages__"],
1010
deps = [
11+
"//bazelrunner",
1112
"//commons",
1213
"//server/src/main/kotlin/org/jetbrains/bsp/bazel/server/bsp/info",
1314
],
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package org.jetbrains.bsp.bazel.server.bsp.utils
22

3+
import org.jetbrains.bsp.bazel.bazelrunner.BazelRelease
34
import org.jetbrains.bsp.bazel.commons.Constants
45
import org.jetbrains.bsp.bazel.server.bsp.info.BspInfo
56

6-
class InternalAspectsResolver(val bspInfo: BspInfo) {
7+
class InternalAspectsResolver(val bspInfo: BspInfo, val bazelRelease: BazelRelease) {
78
private val prefix: Lazy<String> = lazy { getPrefix() }
89
fun resolveLabel(aspect: String): String = prefix.value + aspect
910

1011
val bazelBspRoot: String
1112
get() = bspInfo.bazelBspDir().toString()
1213

13-
private fun getPrefix(): String =
14-
"@" + Constants.ASPECT_REPOSITORY + "//aspects:core.bzl%"
14+
private fun getPrefix(): String = when (bazelRelease.major) {
15+
in 0..5 -> "@" + Constants.ASPECT_REPOSITORY + "//aspects:core.bzl%"
16+
else -> "@@" + Constants.ASPECT_REPOSITORY + "//aspects:core.bzl%"
17+
}
1518
}

server/src/main/kotlin/org/jetbrains/bsp/bazel/server/common/ServerContainer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class ServerContainer internal constructor(
5454
)
5555
val bazelInfo = bazelDataResolver.resolveBazelInfo { }
5656

57-
val aspectsResolver = InternalAspectsResolver(bspInfo)
57+
val aspectsResolver = InternalAspectsResolver(bspInfo, bazelInfo.release)
5858
val bazelBspEnvironmentManager = BazelBspEnvironmentManager(aspectsResolver, BazelExternalRulesQueryImpl(bazelRunner))
5959
val bazelBspAspectsManager = BazelBspAspectsManager(compilationManager, aspectsResolver, bazelBspEnvironmentManager)
6060
val bazelPathsResolver = BazelPathsResolver(bazelInfo)

server/src/test/kotlin/org/jetbrains/bsp/bazel/server/bsp/managers/BazelBspEnvironmentManagerTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package org.jetbrains.bsp.bazel.server.bsp.managers
22

33
import io.kotest.matchers.equals.shouldBeEqual
44
import org.eclipse.lsp4j.jsonrpc.CancelChecker
5+
import org.jetbrains.bsp.bazel.bazelrunner.BazelInfo
6+
import org.jetbrains.bsp.bazel.bazelrunner.BazelRelease
57
import org.jetbrains.bsp.bazel.server.bsp.info.BspInfo
68
import org.jetbrains.bsp.bazel.server.bsp.utils.InternalAspectsResolver
79
import org.junit.jupiter.api.BeforeEach
@@ -60,7 +62,7 @@ class BazelBspEnvironmentManagerTest {
6062
val dotBazelBspPath = createTempDirectory(".bazelbsp")
6163

6264
dotBazelBspAspectsPath = dotBazelBspPath.resolve("aspects").createDirectory()
63-
internalAspectsResolverMock = InternalAspectsResolver(BspInfoMock(dotBazelBspPath))
65+
internalAspectsResolverMock = InternalAspectsResolver(BspInfoMock(dotBazelBspPath), BazelRelease(5))
6466
}
6567

6668
@Test

server/src/test/kotlin/org/jetbrains/bsp/bazel/server/bsp/utils/InternalAspectsResolverTest.kt

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jetbrains.bsp.bazel.server.bsp.utils
22

33
import io.kotest.matchers.shouldBe
4+
import org.jetbrains.bsp.bazel.bazelrunner.BazelRelease
45
import org.jetbrains.bsp.bazel.server.bsp.info.BspInfo
56
import org.junit.jupiter.api.Test
67
import java.nio.file.Paths
@@ -33,6 +34,25 @@ class InternalAspectsResolverTest {
3334
aspectLabel shouldBe "@bazelbsp_aspect//aspects:core.bzl%get_classpath"
3435
}
3536

36-
private fun createAspectsResolver(bspProjectRoot: String): InternalAspectsResolver =
37-
InternalAspectsResolver(BspInfo(Paths.get(bspProjectRoot)))
37+
@Test
38+
fun `should resolve label differently for bazel version leq 5 and geq 6`() {
39+
// given
40+
val bspProjectRoot = "/Users/user/workspace/test-project/bsp-projects/test-project-bsp"
41+
42+
// when
43+
val internalAspectsResolverVer5 = createAspectsResolver(bspProjectRoot, BazelRelease(5))
44+
val internalAspectsResolverVer6 = createAspectsResolver(bspProjectRoot, BazelRelease(6))
45+
val aspectLabelVer5 = internalAspectsResolverVer5.resolveLabel("get_classpath")
46+
val aspectLabelVer6 = internalAspectsResolverVer6.resolveLabel("get_classpath")
47+
48+
// then
49+
aspectLabelVer5 shouldBe "@bazelbsp_aspect//aspects:core.bzl%get_classpath"
50+
aspectLabelVer6 shouldBe "@@bazelbsp_aspect//aspects:core.bzl%get_classpath"
51+
}
52+
53+
private fun createAspectsResolver(
54+
bspProjectRoot: String,
55+
bazelRelease: BazelRelease = BazelRelease(5)
56+
): InternalAspectsResolver =
57+
InternalAspectsResolver(BspInfo(Paths.get(bspProjectRoot)), bazelRelease)
3858
}

0 commit comments

Comments
 (0)