Adding kotlin bazel tests
diff --git a/java/kotlin/BUILD b/java/kotlin/BUILD
new file mode 100644
index 0000000..97c8162
--- /dev/null
+++ b/java/kotlin/BUILD
@@ -0,0 +1,278 @@
+load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library", "kt_jvm_test", "kt_jvm_binary")
+load("@rules_java//java:defs.bzl", "java_proto_library")
+load("@rules_jvm_external//:defs.bzl", "java_export")
+load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//:protobuf_version.bzl", "PROTOBUF_VERSION")
+
+# Kotlin generated protos depend on this and only this.
+kt_jvm_library(
+ name = "shared_runtime",
+ srcs = [
+ "src/main/kotlin/com/google/protobuf/DslList.kt",
+ "src/main/kotlin/com/google/protobuf/DslMap.kt",
+ "src/main/kotlin/com/google/protobuf/DslProxy.kt",
+ "src/main/kotlin/com/google/protobuf/ExtensionList.kt",
+ "src/main/kotlin/com/google/protobuf/ProtoDslMarker.kt",
+ "src/main/kotlin/com/google/protobuf/UnmodifiableCollections.kt",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":only_for_use_in_proto_generated_code_its_generator_and_tests",
+ "//java/lite",
+ ],
+)
+
+kt_jvm_library(
+ name = "only_for_use_in_proto_generated_code_its_generator_and_tests",
+ srcs = ["src/main/kotlin/com/google/protobuf/OnlyForUseByGeneratedProtoCode.kt"],
+ visibility = ["//java:__subpackages__"],
+)
+
+kt_jvm_library(
+ name = "bytestring_lib",
+ srcs = ["src/main/kotlin/com/google/protobuf/ByteStrings.kt"],
+ deps = ["//java/lite"],
+)
+
+kt_jvm_library(
+ name = "full_extensions",
+ srcs = ["src/main/kotlin/com/google/protobuf/ExtendableMessageExtensions.kt"],
+ deps = ["//java/core"],
+)
+
+test_suite(
+ name = "tests",
+ tests = [
+ "bytestring_test",
+ "shared_tests",
+ "test_extensions",
+ "proto2_test",
+ "proto3_test",
+ ],
+)
+
+kt_jvm_test(
+ name = "bytestring_test",
+ srcs = ["src/test/kotlin/com/google/protobuf/ByteStringsTest.kt"],
+ deps = [
+ ":bytestring_lib",
+ "//java/lite",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+ "@maven//:com_google_truth_truth",
+ "@maven//:junit_junit",
+ ],
+ test_class = "com.google.protobuf.kotlin.ByteStringsTest",
+)
+
+proto_library(
+ name = "example_extensible_message_proto",
+ srcs = ["src/test/proto/com/google/protobuf/example_extensible_message.proto"],
+ visibility = ["//visibility:public"],
+)
+
+java_proto_library(
+ name = "example_extensible_message_java_proto",
+ deps = [":example_extensible_message_proto"],
+)
+
+kt_jvm_test(
+ name = "shared_tests",
+ srcs = [
+ "src/test/kotlin/com/google/protobuf/DslListTest.kt",
+ "src/test/kotlin/com/google/protobuf/DslMapTest.kt",
+ "src/test/kotlin/com/google/protobuf/ExtensionListTest.kt",
+ ],
+ deps = [
+ ":bytestring_lib",
+ ":example_extensible_message_java_proto",
+ ":only_for_use_in_proto_generated_code_its_generator_and_tests",
+ ":shared_runtime",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+ "@maven//:com_google_truth_truth",
+ "@maven//:com_google_guava_guava_testlib",
+ "@maven//:junit_junit",
+ ],
+ test_class = "com.google.protobuf.kotlin.DslListTest",
+)
+
+kt_jvm_test(
+ name = "test_extensions",
+ srcs = ["src/test/kotlin/com/google/protobuf/ExtendableMessageExtensionsTest.kt"],
+ deps = [
+ ":example_extensible_message_java_proto",
+ ":full_extensions",
+ "//java/lite",
+ ":only_for_use_in_proto_generated_code_its_generator_and_tests",
+ ":shared_runtime",
+ "@com_github_jetbrains_kotlin//:kotlin-test",
+ "@maven//:com_google_truth_truth",
+ "@maven//:junit_junit",
+ ],
+ test_class = "com.google.protobuf.kotlin.ExtendableMessageExtensionsTest",
+)
+
+proto_library(
+ name = "evil_names_proto2",
+ srcs = ["src/test/proto/com/google/protobuf/evil_names_proto2.proto"],
+ visibility = ["//:__subpackages__"],
+)
+
+proto_library(
+ name = "evil_names_proto3",
+ srcs = ["src/test/proto/com/google/protobuf/evil_names_proto3.proto"],
+ visibility = ["//:__subpackages__"],
+)
+
+java_proto_library(
+ name = "evil_names_proto2_java_proto",
+ deps = [":evil_names_proto2"],
+)
+
+java_proto_library(
+ name = "evil_names_proto3_java_proto",
+ deps = [":evil_names_proto3"],
+)
+
+proto_library(
+ name = "multiple_files_proto3",
+ srcs = ["src/test/proto/com/google/protobuf/multiple_files_proto3.proto"],
+ visibility = ["//:__subpackages__"],
+)
+
+java_proto_library( name = "multiple_files_proto3_java_proto",
+ deps = [":multiple_files_proto3"],
+)
+
+genrule(
+ name = "gen_kotlin_proto3_java_multiple_files",
+ srcs = ["src/test/proto/com/google/protobuf/multiple_files_proto3.proto"],
+ outs = [
+ "MultipleFilesMessageAKt.kt",
+ "MultipleFilesMessageBKt.kt",
+ "MultipleFilesProto3Kt.kt",
+ ],
+ cmd = "$(location //:protoc) " +
+ "--kotlin_out=shared,immutable:$(@D) " +
+ "$(location src/test/proto/com/google/protobuf/multiple_files_proto3.proto) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/MultipleFilesMessageAKt.kt " +
+ "$(location MultipleFilesMessageAKt.kt) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/MultipleFilesMessageBKt.kt " +
+ "$(location MultipleFilesMessageBKt.kt) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/MultipleFilesProto3Kt.kt " +
+ "$(location MultipleFilesProto3Kt.kt)",
+ tools = ["//:protoc"],
+)
+
+genrule(
+ name = "gen_evil_names_proto2",
+ srcs = ["src/test/proto/com/google/protobuf/evil_names_proto2.proto"],
+ outs = [
+ "EvilNamesProto2Kt.kt",
+ "HardKeywordsAllTypesProto2Kt.kt",
+ "InterfaceKt.kt",
+ ],
+ cmd = "$(location //:protoc) " +
+ "--kotlin_out=shared,immutable:$(@D) " +
+ "$(location src/test/proto/com/google/protobuf/evil_names_proto2.proto) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/EvilNamesProto2Kt.kt " +
+ "$(location EvilNamesProto2Kt.kt) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/HardKeywordsAllTypesProto2Kt.kt " +
+ "$(location HardKeywordsAllTypesProto2Kt.kt) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/InterfaceKt.kt " +
+ "$(location InterfaceKt.kt)",
+ tools = ["//:protoc"],
+)
+
+genrule(
+ name = "gen_evil_names_proto3",
+ srcs = ["src/test/proto/com/google/protobuf/evil_names_proto3.proto"],
+ outs = [
+ "ClassKt.kt",
+ "EvilNamesProto3Kt.kt",
+ "HardKeywordsAllTypesProto3Kt.kt",
+ ],
+ cmd = "$(location //:protoc) " +
+ "--kotlin_out=shared,immutable:$(@D) " +
+ "$(location src/test/proto/com/google/protobuf/evil_names_proto3.proto) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/ClassKt.kt " +
+ "$(location ClassKt.kt) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/EvilNamesProto3Kt.kt " +
+ "$(location EvilNamesProto3Kt.kt) && " +
+ "cp $(@D)/com/google/protobuf/kotlin/generator/HardKeywordsAllTypesProto3Kt.kt " +
+ "$(location HardKeywordsAllTypesProto3Kt.kt)",
+ tools = ["//:protoc"],
+)
+
+kt_jvm_library(
+ name = "kotlin_unittest",
+ srcs = [
+ ":gen_evil_names_proto2",
+ "//:gen_kotlin_unittest",
+ ],
+ deps = [
+ ":evil_names_proto2_java_proto",
+ "//java/core:core",
+ ":only_for_use_in_proto_generated_code_its_generator_and_tests",
+ ":shared_runtime",
+ "//:java_test_protos",
+ ],
+)
+
+kt_jvm_library(
+ name = "kotlin_proto3_unittest",
+ srcs = [
+ ":gen_evil_names_proto3",
+ ":gen_kotlin_proto3_java_multiple_files",
+ "//:gen_kotlin_proto3_unittest",
+ ],
+ deps = [
+ ":evil_names_proto3_java_proto",
+ ":multiple_files_proto3_java_proto",
+ "//java/core:core",
+ ":only_for_use_in_proto_generated_code_its_generator_and_tests",
+ ":shared_runtime",
+ "//:java_test_protos",
+ ],
+)
+
+kt_jvm_test(
+ name = "proto2_test",
+ srcs = ["src/test/kotlin/com/google/protobuf/Proto2Test.kt"],
+ deps = [
+ ":kotlin_unittest",
+ "//java/core:test_util",
+ "@maven//:com_google_truth_truth",
+ "@maven//:junit_junit",
+ ],
+ test_class = "com.google.protobuf.kotlin.Proto2Test",
+)
+
+kt_jvm_test(
+ name = "proto3_test",
+ srcs = ["src/test/kotlin/com/google/protobuf/Proto3Test.kt"],
+ deps = [
+ ":kotlin_proto3_unittest",
+ "//java/core:test_util",
+ "@maven//:com_google_truth_truth",
+ "@maven//:junit_junit",
+ ],
+ test_class = "com.google.protobuf.kotlin.Proto3Test",
+)
+
+java_export(
+ name = "kotlin_mvn",
+ maven_coordinates = "com.google.protobuf:protobuf-kotlin:%s" % PROTOBUF_VERSION,
+ pom_template = "pom_template.xml",
+ runtime_deps = [":shared_runtime"],
+)
+
+filegroup(
+ name = "release",
+ srcs = [
+ ":kotlin_mvn-docs",
+ ":kotlin_mvn-maven-source",
+ ":kotlin_mvn-pom",
+ ":kotlin_mvn-project",
+ ],
+ visibility = ["//java:__pkg__"],
+)