• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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