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