BUILD 14 KB

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