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