diff --git a/examples/jetpack_compose/WORKSPACE b/examples/jetpack_compose/WORKSPACE index 1e9092234..d4e401234 100644 --- a/examples/jetpack_compose/WORKSPACE +++ b/examples/jetpack_compose/WORKSPACE @@ -10,8 +10,6 @@ _KOTLIN_COMPILER_SHA = "88b39213506532c816ff56348c07bbeefe0c8d18943bffbad11063cf # Setup Kotlin -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - http_archive( name = "rules_kotlin", sha256 = "34e8c0351764b71d78f76c8746e98063979ce08dcf1a91666f3f3bc2949a533d", diff --git a/src/main/kotlin/io/bazel/kotlin/test/BazelIntegrationTestRunner.kt b/src/main/kotlin/io/bazel/kotlin/test/BazelIntegrationTestRunner.kt index 34a4b0cc3..f501be1bc 100644 --- a/src/main/kotlin/io/bazel/kotlin/test/BazelIntegrationTestRunner.kt +++ b/src/main/kotlin/io/bazel/kotlin/test/BazelIntegrationTestRunner.kt @@ -65,14 +65,14 @@ object BazelIntegrationTestRunner { workspace, "--bazelrc=$bazelrc", "info", - bzlmod.asFlag(), + version.workspaceFlag(bzlmod), "--override_repository=rules_kotlin=$unpack", ).onFailThrow() bazel.run( workspace, "--bazelrc=$bazelrc", "build", - bzlmod.asFlag(), + version.workspaceFlag(bzlmod), "--override_repository=rules_kotlin=$unpack", "//...", ).onFailThrow() @@ -80,7 +80,7 @@ object BazelIntegrationTestRunner { workspace, "--bazelrc=$bazelrc", "query", - bzlmod.asFlag(), + version.workspaceFlag(bzlmod), "--override_repository=rules_kotlin=$unpack", "kind(\".*_test\", \"//...\")", ).ok { process -> @@ -89,7 +89,7 @@ object BazelIntegrationTestRunner { workspace, "--bazelrc=$bazelrc", "test", - bzlmod.asFlag(), + version.workspaceFlag(bzlmod), "--override_repository=rules_kotlin=$unpack", "//...", ).onFailThrow() @@ -97,19 +97,14 @@ object BazelIntegrationTestRunner { } } } - - fun workspaceConfiguration(enableBzlMod:Boolean) { - - } - - private fun Boolean.asFlag() : String = if (this) { "--enable_bzlmod=true" } else { "--enable_workspace=true" } - - private fun Path.hasModule() = resolve("MODULE").exists() || resolve("MODULE.bazel").exists() + fun Path.hasModule() = resolve("MODULE").exists() || resolve("MODULE.bazel").exists() private fun Path.hasWorkspace() = resolve("WORKSPACE").exists() || resolve("WORKSPACE.bazel").exists() - sealed class Version{ + sealed class Version { abstract fun resolveBazelRc(workspace: Path): Path; - + + abstract fun workspaceFlag(isBzlMod: Boolean): String + class Head : Version() { override fun resolveBazelRc(workspace: Path): Path { workspace.resolve(".bazelrc.head").takeIf(Path::exists)?.let { @@ -120,6 +115,12 @@ object BazelIntegrationTestRunner { } return workspace.resolve("/dev/null") } + + override fun workspaceFlag(isBzlMod: Boolean): String = if (isBzlMod) { + "--enable_bzlmod=true" + } else { + "--enable_workspace=true" + } } class Known(private val major: Int, private val minor: Int, private val patch: Int) : Version() { @@ -142,9 +143,19 @@ object BazelIntegrationTestRunner { } return workspace.resolve("/dev/null") } + + override fun workspaceFlag(isBzlMod: Boolean): String = if (isBzlMod) { + "--enable_bzlmod=true" + } else if (major >= 7) { + "--enable_workspace=true" + } else { + "--enable_bzlmod=false" + } } } + private val VERSION_REGEX = Regex("(?\\d+)\\.(?\\d+)\\.(?\\d+)([^.]*)") + private fun Result.parseVersion(): Version { ok { result -> result.stdOut.toString(UTF_8).split("\n") @@ -154,8 +165,14 @@ object BazelIntegrationTestRunner { if ("no_version" in line) { return Version.Head() } - val parts = line.split(" ")[1].split(".") - return Version.Known(parts[0].toInt(), parts[1].toInt(), parts[2].toInt()) + VERSION_REGEX.find(line.trim())?.let { result -> + return Version.Known( + major = result.groups["major"]?.value?.toInt() ?: 0, + minor = result.groups["minor"]?.value?.toInt() ?: 0, + patch = result.groups["patch"]?.value?.toInt() ?: 0, + ) + } + } throw IllegalStateException("Bazel version not available") }