Add skip_androidlint parameter to rules_kotlin common.kt_jvm_library. Allows internal rule and aspect helpers (such as Kotlin proto aspects) to skip running Android Lint on generated code libraries (in subsequent CL). Extracted from subsequent CL as it was getting a bit big. Similar to http://google3/third_party/bazel_rules/rules_kotlin/kotlin/native/native_common.bzl;l=606;rcl=966952092 PiperOrigin-RevId: 969633607
diff --git a/bazel/private/java_lite_proto_library.bzl b/bazel/private/java_lite_proto_library.bzl index c6da048..f595baa 100644 --- a/bazel/private/java_lite_proto_library.bzl +++ b/bazel/private/java_lite_proto_library.bzl
@@ -61,7 +61,7 @@ transitive_jars = [dep[JavaProtoAspectInfo].jars for dep in ctx.rule.attr.deps] return [ - java_info, + add_constraints(java_info, constraints = ["android"]), JavaProtoAspectInfo(jars = depset(jars, transitive = transitive_jars)), ]
diff --git a/java/kotlin/src/test/kotlin/com/google/protobuf/diamond/DiamondDependencyTest.kt b/java/kotlin/src/test/kotlin/com/google/protobuf/diamond/DiamondDependencyTest.kt new file mode 100644 index 0000000..2b125e4 --- /dev/null +++ b/java/kotlin/src/test/kotlin/com/google/protobuf/diamond/DiamondDependencyTest.kt
@@ -0,0 +1,26 @@ +package com.google.protobuf.kotlin.diamond + +import kotlin.test.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +/** + * Regression test for Bazel Java One-Version classpath collisions in Kotlin proto generation. + * + * Verifies that when a test depends simultaneously on a leaf Kotlin proto library + * (`:leaf_kt_proto`) and an exporter Kotlin proto library (`:exporter_kt_proto`, which re-exports + * `:leaf_proto`), the Kotlin proto code generation does not duplicate class definitions with + * differing Cyclic Redundancy Checks (CRCs) across multiple jars on the runtime classpath. + */ +@RunWith(JUnit4::class) +class DiamondDependencyTest { + @Test + fun testDiamondDependencyClasspath() { + val leaf = leafMessage { value = "leaf" } + assertEquals("leaf", leaf.value) + + val exporter = exporterMessage { value = "exporter" } + assertEquals("exporter", exporter.value) + } +}
diff --git a/java/kotlin/src/test/proto/com/google/protobuf/diamond/exporter.proto b/java/kotlin/src/test/proto/com/google/protobuf/diamond/exporter.proto new file mode 100644 index 0000000..dd1fb22 --- /dev/null +++ b/java/kotlin/src/test/proto/com/google/protobuf/diamond/exporter.proto
@@ -0,0 +1,9 @@ +edition = "2024"; + +package protobuf.kotlin.test; + +option java_package = "com.google.protobuf.kotlin.diamond"; + +message ExporterMessage { + string value = 1; +}
diff --git a/java/kotlin/src/test/proto/com/google/protobuf/diamond/leaf.proto b/java/kotlin/src/test/proto/com/google/protobuf/diamond/leaf.proto new file mode 100644 index 0000000..5a2da92 --- /dev/null +++ b/java/kotlin/src/test/proto/com/google/protobuf/diamond/leaf.proto
@@ -0,0 +1,9 @@ +edition = "2024"; + +package protobuf.kotlin.test; + +option java_package = "com.google.protobuf.kotlin.diamond"; + +message LeafMessage { + string value = 1; +}