Skip to content

Commit f0be4c6

Browse files
authored
Merge pull request #12 from kc-vl/bzlmod-reponame-fixes
fix: support both rules_scala and io_bazel_rules_scala repo names
2 parents a812863 + 7184167 commit f0be4c6

File tree

17 files changed

+184
-23
lines changed

17 files changed

+184
-23
lines changed

.bazelrc

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

MODULE.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,13 +196,13 @@ bazel_binaries = use_extension(
196196
# test project are too old for bazel 7
197197
# bazel_binaries.download(version_file = "//:.bazelversion")
198198
bazel_binaries.download(version = "8.2.1")
199-
bazel_binaries.download(version = "7.4.0")
199+
bazel_binaries.download(version = "7.6.1")
200200
bazel_binaries.download(version = "6.4.0")
201201
use_repo(
202202
bazel_binaries,
203203
"bazel_binaries",
204204
"bazel_binaries_bazelisk",
205205
"build_bazel_bazel_6_4_0",
206-
"build_bazel_bazel_7_4_0",
206+
"build_bazel_bazel_7_6_1",
207207
"build_bazel_bazel_8_2_1",
208208
)

MODULE.bazel.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/aspects/rules/scala/scala_info.bzl renamed to server/aspects/rules/scala/scala_info.bzl.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def extract_scala_info(target, ctx, output_groups, **kwargs):
5353
if not kind.startswith("scala_") and not kind.startswith("thrift_"):
5454
return None, None
5555

56-
SCALA_TOOLCHAIN = "@io_bazel_rules_scala//scala:toolchain_type"
56+
SCALA_TOOLCHAIN = "@${rulesetName}//scala:toolchain_type"
5757

5858
scala_info = {}
5959

server/e2e/BUILD

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ bazel_integration_test_all_versions(
150150
test_runner = "//server/e2e/src/main/kotlin/org/jetbrains/bsp/bazel:NestedModulesTest",
151151
)
152152

153+
bazel_integration_test_all_versions(
154+
name = "rules_scala_bzlmod_test",
155+
bzlmod_project_path = "test-projects/bzlmod/rules_scala",
156+
test_runner = "//server/e2e/src/main/kotlin/org/jetbrains/bsp/bazel:RulesScalaBzlmodTest",
157+
)
158+
153159
test_suite(
154160
name = "all_tests",
155161
tags = integration_test_utils.DEFAULT_INTEGRATION_TEST_TAGS,
@@ -170,6 +176,7 @@ test_suite(
170176
":partial_sync_test",
171177
":python_project_test",
172178
":remote_jdk_test",
179+
":rules_scala_bzlmod_test",
173180
":rust_project_test",
174181
":sample_repo_test",
175182
":server_downloads_bazelisk_test",

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,3 +266,20 @@ kt_jvm_binary(
266266
"@maven//:io_kotest_kotest_common_jvm",
267267
],
268268
)
269+
270+
kt_jvm_binary(
271+
name = "RulesScalaBzlmodTest",
272+
srcs = ["RulesScalaBzlmodTest.kt"],
273+
main_class = "org.jetbrains.bsp.bazel.RulesScalaBzlmodTest",
274+
resources = ["//server/e2e/src/main/resources:bsp-e2e-resources"],
275+
visibility = ["//server/e2e:__subpackages__"],
276+
deps = [
277+
"//server/commons",
278+
"//server/e2e/src/main/kotlin/org/jetbrains/bsp/bazel/base",
279+
"@maven//:ch_epfl_scala_bsp4j",
280+
"@maven//:io_kotest_kotest_assertions_api_jvm",
281+
"@maven//:io_kotest_kotest_assertions_core_jvm",
282+
"@maven//:io_kotest_kotest_assertions_shared_jvm",
283+
"@maven//:io_kotest_kotest_common_jvm",
284+
],
285+
)
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package org.jetbrains.bsp.bazel
2+
3+
import ch.epfl.scala.bsp4j.SourcesParams
4+
import ch.epfl.scala.bsp4j.WorkspaceBuildTargetsResult
5+
import io.kotest.matchers.collections.shouldContainExactlyInAnyOrder
6+
import io.kotest.matchers.shouldBe
7+
import kotlinx.coroutines.future.await
8+
import org.jetbrains.bazel.label.Label
9+
import org.jetbrains.bsp.bazel.base.BazelBspTestBaseScenario
10+
import org.jetbrains.bsp.bazel.base.BazelBspTestScenarioStep
11+
import org.jetbrains.bsp.bazel.install.Install
12+
import kotlin.io.path.Path
13+
import kotlin.io.path.relativeTo
14+
import kotlin.time.Duration.Companion.seconds
15+
16+
object RulesScalaBzlmodTest : BazelBspTestBaseScenario() {
17+
private val testClient = createBazelClient()
18+
19+
@JvmStatic
20+
fun main(args: Array<String>) = executeScenario()
21+
22+
override fun installServer() {
23+
Install.main(
24+
arrayOf(
25+
"-d",
26+
workspaceDir,
27+
"-b",
28+
bazelBinary,
29+
"-t",
30+
"@//...",
31+
),
32+
)
33+
}
34+
35+
override fun scenarioSteps(): List<BazelBspTestScenarioStep> =
36+
listOf(
37+
compareWorkspaceTargetsResults(),
38+
)
39+
40+
override fun expectedWorkspaceBuildTargetsResult(): WorkspaceBuildTargetsResult {
41+
error("not needed")
42+
}
43+
44+
private fun compareWorkspaceTargetsResults(): BazelBspTestScenarioStep =
45+
BazelBspTestScenarioStep(
46+
"compare workspace targets results",
47+
) {
48+
testClient.test(60.seconds) { session, _ ->
49+
val targetsResult = session.server.workspaceBuildTargets().await()
50+
51+
targetsResult.targets.size shouldBe 2
52+
targetsResult.targets.map { Label.parse(it.id.uri) } shouldContainExactlyInAnyOrder
53+
listOf(
54+
Label.parse("@//:lib"),
55+
Label.parse("@//:bin"),
56+
)
57+
58+
val sourcesResult =
59+
session.server
60+
.buildTargetSources(
61+
SourcesParams(targetsResult.targets.map { it.id }),
62+
).await()
63+
64+
sourcesResult.items.size shouldBe 2
65+
66+
sourcesResult.items
67+
.flatMap {
68+
it.sources
69+
}.map { Path(it.uri.removePrefix("file:")).relativeTo(Path(workspaceDir)).toString() } shouldContainExactlyInAnyOrder
70+
listOf(
71+
"Main.scala",
72+
)
73+
}
74+
}
75+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
common --enable_bzlmod
2+
common --incompatible_use_plus_in_repo_names
3+
build --java_runtime_version=remotejdk_11
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_binary")
2+
3+
scala_library(
4+
name = "lib",
5+
srcs = [
6+
"Main.scala",
7+
],
8+
)
9+
10+
scala_binary(
11+
name = "bin",
12+
main_class = "main.Main",
13+
deps = [":lib"],
14+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module(name = "rules_scala_full_bzlmod")
2+
3+
bazel_dep(name = "rules_scala", version = "7.0.0")
4+
bazel_dep(name = "rules_python", version = "0.40.0")
5+
6+
scala_config = use_extension(
7+
"@rules_scala//scala/extensions:config.bzl",
8+
"scala_config",
9+
)
10+
11+
scala_config.settings(scala_version = "2.13.16")
12+
13+
scala_deps = use_extension(
14+
"@rules_scala//scala/extensions:deps.bzl",
15+
"scala_deps",
16+
)
17+
scala_deps.settings(fetch_sources = False)
18+
scala_deps.scala()
19+
scala_deps.scalatest()

0 commit comments

Comments
 (0)