xref: /aosp_15_r20/external/cronet/third_party/protobuf/conformance/BUILD.bazel (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1# Conformance testing for Protobuf.
2
3load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_proto_library")
4load(
5    "@rules_pkg//:mappings.bzl",
6    "pkg_attributes",
7    "pkg_filegroup",
8    "pkg_files",
9    "strip_prefix",
10)
11
12exports_files([
13    "conformance_test_runner.sh",
14    "failure_list_java.txt",
15    "failure_list_java_lite.txt",
16    "text_format_failure_list_java.txt",
17    "text_format_failure_list_java_lite.txt",
18])
19
20cc_proto_library(
21    name = "test_messages_proto2_proto_cc",
22    deps = ["//:test_messages_proto2_proto"],
23)
24
25cc_proto_library(
26    name = "test_messages_proto3_proto_cc",
27    deps = ["//:test_messages_proto3_proto"],
28)
29
30proto_library(
31    name = "conformance_proto",
32    srcs = ["conformance.proto"],
33    visibility = ["//visibility:public"],
34)
35
36cc_proto_library(
37    name = "conformance_proto_cc",
38    deps = [":conformance_proto"],
39)
40
41java_proto_library(
42    name = "conformance_java_proto",
43    visibility = [
44        "//java:__subpackages__",
45    ],
46    deps = [":conformance_proto"],
47)
48
49java_lite_proto_library(
50    name = "conformance_java_proto_lite",
51    visibility = [
52        "//java:__subpackages__",
53    ],
54    deps = [":conformance_proto"],
55)
56
57cc_library(
58    name = "jsoncpp",
59    srcs = ["third_party/jsoncpp/jsoncpp.cpp"],
60    hdrs = ["third_party/jsoncpp/json.h"],
61    includes = ["."],
62)
63
64cc_library(
65    name = "conformance_test",
66    srcs = [
67        "conformance_test.cc",
68        "conformance_test_runner.cc",
69    ],
70    hdrs = [
71        "conformance_test.h",
72    ],
73    includes = ["."],
74    deps = [":conformance_proto_cc"],
75)
76
77cc_library(
78    name = "binary_json_conformance_suite",
79    srcs = ["binary_json_conformance_suite.cc"],
80    hdrs = ["binary_json_conformance_suite.h"],
81    deps = [
82        ":conformance_test",
83        ":jsoncpp",
84        ":test_messages_proto2_proto_cc",
85        ":test_messages_proto3_proto_cc",
86    ],
87)
88
89cc_library(
90    name = "text_format_conformance_suite",
91    srcs = ["text_format_conformance_suite.cc"],
92    hdrs = ["text_format_conformance_suite.h"],
93    deps = [
94        ":conformance_test",
95        ":test_messages_proto2_proto_cc",
96        ":test_messages_proto3_proto_cc",
97    ],
98)
99
100cc_binary(
101    name = "conformance_test_runner",
102    srcs = ["conformance_test_main.cc"],
103    visibility = ["//visibility:public"],
104    deps = [
105        ":binary_json_conformance_suite",
106        ":conformance_test",
107        ":text_format_conformance_suite",
108    ],
109)
110
111java_binary(
112    name = "conformance_java",
113    srcs = ["ConformanceJava.java"],
114    main_class = "ConformanceJava",
115    visibility = [
116        "//java:__subpackages__",
117    ],
118    deps = [
119        ":conformance_java_proto",
120        "//:protobuf_java",
121        "//:protobuf_java_util",
122        "//:test_messages_proto2_java_proto",
123        "//:test_messages_proto3_java_proto",
124    ],
125)
126
127java_binary(
128    name = "conformance_java_lite",
129    srcs = ["ConformanceJavaLite.java"],
130    main_class = "ConformanceJavaLite",
131    visibility = [
132        "//java:__subpackages__",
133    ],
134    deps = [
135        ":conformance_java_proto_lite",
136        "//:protobuf_java_util",
137        "//:protobuf_javalite",
138        "//:test_messages_proto2_java_proto_lite",
139        "//:test_messages_proto3_java_proto_lite",
140    ],
141)
142
143filegroup(
144    name = "all_files",
145    srcs = glob(["**/*"]),
146    visibility = ["//:__pkg__"],
147)
148
149pkg_files(
150    name = "dist_files",
151    srcs = glob(
152        ["**/*"],
153        exclude = [
154            # Handled by dist_scripts:
155            "conformance_test_runner.sh",
156
157            # The following are not in autotools dist:
158            "autoload.php",
159            "conformance_nodejs.js",
160            "failure_list_jruby.txt",
161            "update_failure_list.py",
162        ],
163    ),
164    strip_prefix = strip_prefix.from_root(""),
165    visibility = ["//pkg:__pkg__"],
166)
167
168pkg_files(
169    name = "dist_scripts",
170    srcs = ["conformance_test_runner.sh"],
171    attributes = pkg_attributes(mode = "0555"),
172    strip_prefix = strip_prefix.from_root(""),
173    visibility = ["//pkg:__pkg__"],
174)
175
176pkg_filegroup(
177    name = "all_dist_files",
178    srcs = [
179        ":dist_files",
180        ":dist_scripts",
181    ],
182    visibility = ["//pkg:__pkg__"],
183)
184