1load("@bazel_skylib//rules:build_test.bzl", "build_test") 2load("@rules_java//java:defs.bzl", "java_library", "java_lite_proto_library", "java_proto_library") 3load("@rules_jvm_external//:defs.bzl", "java_export") 4load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") 5load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library") 6load("//conformance:defs.bzl", "conformance_test") 7load("//:protobuf.bzl", "internal_gen_well_known_protos_java") 8load("//:protobuf_version.bzl", "PROTOBUF_JAVA_VERSION") 9load("//java/internal:testing.bzl", "junit_tests") 10 11LITE_SRCS = [ 12 # Keep in sync with `//java/lite:pom.xml`. 13 "src/main/java/com/google/protobuf/AbstractMessageLite.java", 14 "src/main/java/com/google/protobuf/AbstractParser.java", 15 "src/main/java/com/google/protobuf/AbstractProtobufList.java", 16 "src/main/java/com/google/protobuf/AllocatedBuffer.java", 17 "src/main/java/com/google/protobuf/Android.java", 18 "src/main/java/com/google/protobuf/ArrayDecoders.java", 19 "src/main/java/com/google/protobuf/BinaryReader.java", 20 "src/main/java/com/google/protobuf/BinaryWriter.java", 21 "src/main/java/com/google/protobuf/BooleanArrayList.java", 22 "src/main/java/com/google/protobuf/BufferAllocator.java", 23 "src/main/java/com/google/protobuf/ByteBufferWriter.java", 24 "src/main/java/com/google/protobuf/ByteOutput.java", 25 "src/main/java/com/google/protobuf/ByteString.java", 26 "src/main/java/com/google/protobuf/CanIgnoreReturnValue.java", 27 "src/main/java/com/google/protobuf/CheckReturnValue.java", 28 "src/main/java/com/google/protobuf/CodedInputStream.java", 29 "src/main/java/com/google/protobuf/CodedInputStreamReader.java", 30 "src/main/java/com/google/protobuf/CodedOutputStream.java", 31 "src/main/java/com/google/protobuf/CodedOutputStreamWriter.java", 32 "src/main/java/com/google/protobuf/CompileTimeConstant.java", 33 "src/main/java/com/google/protobuf/DoubleArrayList.java", 34 "src/main/java/com/google/protobuf/ExperimentalApi.java", 35 "src/main/java/com/google/protobuf/ExtensionLite.java", 36 "src/main/java/com/google/protobuf/ExtensionRegistryFactory.java", 37 "src/main/java/com/google/protobuf/ExtensionRegistryLite.java", 38 "src/main/java/com/google/protobuf/ExtensionSchema.java", 39 "src/main/java/com/google/protobuf/ExtensionSchemaLite.java", 40 "src/main/java/com/google/protobuf/ExtensionSchemas.java", 41 "src/main/java/com/google/protobuf/FieldInfo.java", 42 "src/main/java/com/google/protobuf/FieldSet.java", 43 "src/main/java/com/google/protobuf/FieldType.java", 44 "src/main/java/com/google/protobuf/FloatArrayList.java", 45 "src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java", 46 "src/main/java/com/google/protobuf/GeneratedMessageLite.java", 47 "src/main/java/com/google/protobuf/InlineMe.java", 48 "src/main/java/com/google/protobuf/IntArrayList.java", 49 "src/main/java/com/google/protobuf/Internal.java", 50 "src/main/java/com/google/protobuf/InvalidProtocolBufferException.java", 51 "src/main/java/com/google/protobuf/IterableByteBufferInputStream.java", 52 "src/main/java/com/google/protobuf/JavaType.java", 53 "src/main/java/com/google/protobuf/LazyField.java", 54 "src/main/java/com/google/protobuf/LazyFieldLite.java", 55 "src/main/java/com/google/protobuf/LazyStringArrayList.java", 56 "src/main/java/com/google/protobuf/LazyStringList.java", 57 "src/main/java/com/google/protobuf/ListFieldSchema.java", 58 "src/main/java/com/google/protobuf/LongArrayList.java", 59 "src/main/java/com/google/protobuf/ManifestSchemaFactory.java", 60 "src/main/java/com/google/protobuf/MapEntryLite.java", 61 "src/main/java/com/google/protobuf/MapFieldLite.java", 62 "src/main/java/com/google/protobuf/MapFieldSchema.java", 63 "src/main/java/com/google/protobuf/MapFieldSchemaLite.java", 64 "src/main/java/com/google/protobuf/MapFieldSchemas.java", 65 "src/main/java/com/google/protobuf/MessageInfo.java", 66 "src/main/java/com/google/protobuf/MessageInfoFactory.java", 67 "src/main/java/com/google/protobuf/MessageLite.java", 68 "src/main/java/com/google/protobuf/MessageLiteOrBuilder.java", 69 "src/main/java/com/google/protobuf/MessageLiteToString.java", 70 "src/main/java/com/google/protobuf/MessageSchema.java", 71 "src/main/java/com/google/protobuf/MessageSetSchema.java", 72 "src/main/java/com/google/protobuf/MutabilityOracle.java", 73 "src/main/java/com/google/protobuf/NewInstanceSchema.java", 74 "src/main/java/com/google/protobuf/NewInstanceSchemaLite.java", 75 "src/main/java/com/google/protobuf/NewInstanceSchemas.java", 76 "src/main/java/com/google/protobuf/NioByteString.java", 77 "src/main/java/com/google/protobuf/OneofInfo.java", 78 "src/main/java/com/google/protobuf/Parser.java", 79 "src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java", 80 "src/main/java/com/google/protobuf/ProtoSyntax.java", 81 "src/main/java/com/google/protobuf/Protobuf.java", 82 "src/main/java/com/google/protobuf/ProtobufArrayList.java", 83 "src/main/java/com/google/protobuf/ProtobufLists.java", 84 "src/main/java/com/google/protobuf/ProtocolStringList.java", 85 "src/main/java/com/google/protobuf/RawMessageInfo.java", 86 "src/main/java/com/google/protobuf/Reader.java", 87 "src/main/java/com/google/protobuf/RopeByteString.java", 88 "src/main/java/com/google/protobuf/Schema.java", 89 "src/main/java/com/google/protobuf/SchemaFactory.java", 90 "src/main/java/com/google/protobuf/SchemaUtil.java", 91 "src/main/java/com/google/protobuf/SmallSortedMap.java", 92 "src/main/java/com/google/protobuf/StructuralMessageInfo.java", 93 "src/main/java/com/google/protobuf/TextFormatEscaper.java", 94 "src/main/java/com/google/protobuf/UninitializedMessageException.java", 95 "src/main/java/com/google/protobuf/UnknownFieldSchema.java", 96 "src/main/java/com/google/protobuf/UnknownFieldSetLite.java", 97 "src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java", 98 "src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java", 99 "src/main/java/com/google/protobuf/UnsafeByteOperations.java", 100 "src/main/java/com/google/protobuf/UnsafeUtil.java", 101 "src/main/java/com/google/protobuf/Utf8.java", 102 "src/main/java/com/google/protobuf/WireFormat.java", 103 "src/main/java/com/google/protobuf/Writer.java", 104] 105 106internal_gen_well_known_protos_java( 107 name = "gen_well_known_protos_javalite", 108 javalite = True, 109 deps = [ 110 "//:any_proto", 111 "//:api_proto", 112 "//:duration_proto", 113 "//:empty_proto", 114 "//:field_mask_proto", 115 "//:source_context_proto", 116 "//:struct_proto", 117 "//:timestamp_proto", 118 "//:type_proto", 119 "//:wrappers_proto", 120 ], 121) 122 123# Should be used as `//java/lite`. 124java_library( 125 name = "lite", 126 srcs = LITE_SRCS + [ 127 ":gen_well_known_protos_javalite", 128 ], 129 visibility = [ 130 "//java/lite:__pkg__", 131 ], 132) 133 134# Bazel users, don't depend on this target, use //java/lite. 135java_export( 136 name = "lite_mvn", 137 maven_coordinates = "com.google.protobuf:protobuf-javalite:%s" % PROTOBUF_JAVA_VERSION, 138 pom_template = "//java/lite:pom_template.xml", 139 resources = [ 140 "//:lite_well_known_protos", 141 ], 142 tags = ["manual"], 143 runtime_deps = [":lite"], 144) 145 146java_library( 147 name = "lite_runtime_only", 148 srcs = LITE_SRCS, 149) 150 151internal_gen_well_known_protos_java( 152 name = "gen_well_known_protos_java", 153 deps = [ 154 "//:any_proto", 155 "//:api_proto", 156 "//:compiler_plugin_proto", 157 "//:descriptor_proto", 158 "//:duration_proto", 159 "//:empty_proto", 160 "//:field_mask_proto", 161 "//:source_context_proto", 162 "//:struct_proto", 163 "//:timestamp_proto", 164 "//:type_proto", 165 "//:wrappers_proto", 166 ], 167) 168 169java_library( 170 name = "core", 171 srcs = glob( 172 [ 173 "src/main/java/com/google/protobuf/*.java", 174 ], 175 exclude = LITE_SRCS, 176 ) + [ 177 ":gen_well_known_protos_java", 178 ], 179 visibility = ["//visibility:public"], 180 exports = [ 181 ":lite_runtime_only", 182 ], 183 deps = [ 184 ":lite_runtime_only", 185 ], 186) 187 188# Bazel users, don't depend on this target, use :core. 189java_export( 190 name = "core_mvn", 191 maven_coordinates = "com.google.protobuf:protobuf-java:%s" % PROTOBUF_JAVA_VERSION, 192 pom_template = "pom_template.xml", 193 resources = [ 194 "//:built_in_runtime_protos", 195 "//:well_known_type_protos", 196 ], 197 tags = ["manual"], 198 runtime_deps = [":core"], 199) 200 201filegroup( 202 name = "release", 203 srcs = [ 204 ":core_mvn-docs", 205 ":core_mvn-maven-source", 206 ":core_mvn-pom", 207 ":core_mvn-project", 208 ":lite_mvn-docs", 209 ":lite_mvn-maven-source", 210 ":lite_mvn-pom", 211 ":lite_mvn-project", 212 ], 213 visibility = ["//java:__pkg__"], 214) 215 216proto_lang_toolchain( 217 name = "toolchain", 218 # keep this in sync w/ WELL_KNOWN_PROTO_MAP in //:BUILD 219 blacklisted_protos = [ 220 "//:any_proto", 221 "//:api_proto", 222 "//:compiler_plugin_proto", 223 "//:descriptor_proto", 224 "//:duration_proto", 225 "//:empty_proto", 226 "//:field_mask_proto", 227 "//:source_context_proto", 228 "//:struct_proto", 229 "//:timestamp_proto", 230 "//:type_proto", 231 "//:wrappers_proto", 232 ], 233 command_line = "--java_out=$(OUT)", 234 runtime = ":core", 235 visibility = ["//visibility:public"], 236) 237 238proto_library( 239 name = "java_test_protos", 240 srcs = glob(["src/test/proto/**/*.proto"]), 241 strip_import_prefix = "src/test/proto", 242 deps = [ 243 "//:any_proto", 244 "//:descriptor_proto", 245 "//:generic_test_protos", 246 "//:wrappers_proto", 247 ], 248) 249 250java_proto_library( 251 name = "generic_test_protos_java_proto", 252 visibility = [ 253 "//java:__subpackages__", 254 ], 255 deps = ["//:generic_test_protos"], 256) 257 258java_proto_library( 259 name = "java_test_protos_java_proto", 260 deps = [":java_test_protos"], 261) 262 263java_library( 264 name = "test_util", 265 srcs = [ 266 "src/test/java/com/google/protobuf/TestUtil.java", 267 "src/test/java/com/google/protobuf/TestUtilLite.java", 268 ], 269 visibility = ["//java:__subpackages__"], 270 deps = [ 271 ":core", 272 ":generic_test_protos_java_proto", 273 ":java_test_protos_java_proto", 274 "@maven//:com_google_guava_guava", 275 "@maven//:junit_junit", 276 ], 277) 278 279test_suite( 280 name = "tests", 281 tests = [ 282 "conformance_test", 283 "core_build_test", 284 "core_tests", 285 "utf8_tests", 286 ], 287) 288 289build_test( 290 name = "core_build_test", 291 targets = [ 292 ":core", 293 ], 294) 295 296conformance_test( 297 name = "conformance_test", 298 failure_list = "//conformance:failure_list_java.txt", 299 testee = "//conformance:conformance_java", 300 text_format_failure_list = "//conformance:text_format_failure_list_java.txt", 301) 302 303junit_tests( 304 name = "core_tests", 305 size = "small", 306 srcs = glob( 307 ["src/test/java/**/*.java"], 308 exclude = [ 309 "src/test/java/com/google/protobuf/DecodeUtf8Test.java", 310 "src/test/java/com/google/protobuf/IsValidUtf8Test.java", 311 "src/test/java/com/google/protobuf/TestUtil.java", 312 "src/test/java/com/google/protobuf/TestUtilLite.java", 313 ], 314 ), 315 data = ["//:testdata"], 316 deps = [ 317 ":core", 318 ":generic_test_protos_java_proto", 319 ":java_test_protos_java_proto", 320 ":test_util", 321 "@maven//:com_google_guava_guava", 322 "@maven//:com_google_truth_truth", 323 "@maven//:junit_junit", 324 "@maven//:org_mockito_mockito_core", 325 ], 326) 327 328# The UTF-8 validation tests are much slower than the other tests, so they get 329# their own test target with a longer timeout. 330junit_tests( 331 name = "utf8_tests", 332 size = "large", 333 srcs = [ 334 "src/test/java/com/google/protobuf/DecodeUtf8Test.java", 335 "src/test/java/com/google/protobuf/IsValidUtf8Test.java", 336 "src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java", 337 ], 338 deps = [ 339 ":core", 340 "@maven//:com_google_guava_guava", 341 "@maven//:com_google_truth_truth", 342 "@maven//:junit_junit", 343 ], 344) 345 346java_lite_proto_library( 347 name = "generic_test_protos_java_proto_lite", 348 visibility = [ 349 "//java/kotlin-lite:__pkg__", 350 "//java/lite:__pkg__", 351 ], 352 deps = ["//:generic_test_protos"], 353) 354 355java_lite_proto_library( 356 name = "java_test_protos_java_proto_lite", 357 visibility = [ 358 "//java/lite:__pkg__", 359 ], 360 deps = [":java_test_protos"], 361) 362 363genrule( 364 name = "rewrite_javalite_test_util", 365 srcs = [ 366 "//java/lite:lite.awk", 367 "src/test/java/com/google/protobuf/TestUtil.java", 368 ], 369 outs = ["TestUtil.java"], 370 cmd = "awk -f $(location //java/lite:lite.awk) $(location src/test/java/com/google/protobuf/TestUtil.java) > $@", 371) 372 373java_library( 374 name = "test_util_lite", 375 srcs = [ 376 "src/test/java/com/google/protobuf/TestUtilLite.java", 377 ":rewrite_javalite_test_util", 378 ], 379 visibility = [ 380 "//java/kotlin-lite:__pkg__", 381 "//java/lite:__pkg__", 382 ], 383 deps = [ 384 ":generic_test_protos_java_proto_lite", 385 ":java_test_protos_java_proto_lite", 386 ":lite_runtime_only", 387 "@maven//:com_google_guava_guava", 388 "@maven//:junit_junit", 389 ], 390) 391 392LITE_TEST_EXCLUSIONS = [ 393 # Keep in sync with //java/lite:pom.xml id=copy-test-source-files execution. 394 "src/test/java/com/google/protobuf/AbstractMessageTest.java", 395 "src/test/java/com/google/protobuf/AbstractProto2SchemaTest.java", 396 "src/test/java/com/google/protobuf/AnyTest.java", 397 "src/test/java/com/google/protobuf/CodedInputStreamTest.java", 398 "src/test/java/com/google/protobuf/DeprecatedFieldTest.java", 399 "src/test/java/com/google/protobuf/DescriptorsTest.java", 400 "src/test/java/com/google/protobuf/DiscardUnknownFieldsTest.java", 401 "src/test/java/com/google/protobuf/DynamicMessageTest.java", 402 "src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java", 403 "src/test/java/com/google/protobuf/FieldPresenceTest.java", 404 "src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java", 405 "src/test/java/com/google/protobuf/GeneratedMessageTest.java", 406 "src/test/java/com/google/protobuf/LazyFieldTest.java", 407 "src/test/java/com/google/protobuf/LazyStringEndToEndTest.java", 408 "src/test/java/com/google/protobuf/MapForProto2Test.java", 409 "src/test/java/com/google/protobuf/MapTest.java", 410 "src/test/java/com/google/protobuf/MessageTest.java", 411 "src/test/java/com/google/protobuf/NestedBuildersTest.java", 412 "src/test/java/com/google/protobuf/PackedFieldTest.java", 413 "src/test/java/com/google/protobuf/ParserTest.java", 414 "src/test/java/com/google/protobuf/ParseExceptionsTest.java", 415 "src/test/java/com/google/protobuf/Proto2ExtensionLookupSchemaTest.java", 416 "src/test/java/com/google/protobuf/Proto2SchemaTest.java", 417 "src/test/java/com/google/protobuf/Proto2UnknownEnumValueTest.java", 418 "src/test/java/com/google/protobuf/RepeatedFieldBuilderV3Test.java", 419 "src/test/java/com/google/protobuf/ServiceTest.java", 420 "src/test/java/com/google/protobuf/SingleFieldBuilderV3Test.java", 421 "src/test/java/com/google/protobuf/TestBadIdentifiers.java", 422 "src/test/java/com/google/protobuf/TextFormatParseInfoTreeTest.java", 423 "src/test/java/com/google/protobuf/TextFormatParseLocationTest.java", 424 "src/test/java/com/google/protobuf/TextFormatTest.java", 425 "src/test/java/com/google/protobuf/TestUtil.java", 426 "src/test/java/com/google/protobuf/TestUtilLite.java", 427 "src/test/java/com/google/protobuf/TypeRegistryTest.java", 428 "src/test/java/com/google/protobuf/UnknownEnumValueTest.java", 429 "src/test/java/com/google/protobuf/UnknownFieldSetLiteTest.java", 430 "src/test/java/com/google/protobuf/UnknownFieldSetPerformanceTest.java", 431 "src/test/java/com/google/protobuf/UnknownFieldSetTest.java", 432 "src/test/java/com/google/protobuf/WellKnownTypesTest.java", 433 "src/test/java/com/google/protobuf/WireFormatTest.java", 434] 435 436junit_tests( 437 name = "lite_tests", 438 size = "large", 439 srcs = glob( 440 ["src/test/java/**/*.java"], 441 exclude = LITE_TEST_EXCLUSIONS, 442 ), 443 data = ["//:testdata"], 444 test_prefix = "Lite", 445 deps = [ 446 ":generic_test_protos_java_proto_lite", 447 ":java_test_protos_java_proto_lite", 448 ":lite", 449 ":test_util_lite", 450 "@maven//:com_google_truth_truth", 451 "@maven//:junit_junit", 452 "@maven//:org_mockito_mockito_core", 453 ], 454) 455 456pkg_files( 457 name = "dist_files", 458 srcs = glob([ 459 "src/main/java/com/google/protobuf/*.java", 460 "src/test/java/**/*.java", 461 "src/test/proto/**/*.proto", 462 ]) + [ 463 "BUILD.bazel", 464 "generate-sources-build.xml", 465 "generate-test-sources-build.xml", 466 "pom.xml", 467 "pom_template.xml", 468 ], 469 strip_prefix = strip_prefix.from_root(""), 470 visibility = ["//java:__pkg__"], 471) 472