Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
7 months ago
|
"""Provides a rule to generate a conformance test for a given version of the gencode."""
|
||
|
|
||
|
load("@bazel_skylib//rules:build_test.bzl", "build_test")
|
||
|
|
||
|
def java_runtime_conformance(name, gencode_version, tags = []):
|
||
|
"""Generates a conformance test for the given version of the runtime.
|
||
|
|
||
|
For example, runtime_conformance("3.19.4") will generate a build test named "conformance_v3.19.4"
|
||
|
that will fail if the runtime at that version fails to compile the unittest proto.
|
||
|
|
||
|
Args:
|
||
|
name: The name of the test.
|
||
|
gencode_version: The version of the runtime to test.
|
||
|
tags: Any tags to apply to the generated test.
|
||
|
"""
|
||
|
|
||
|
if gencode_version == "main":
|
||
|
protoc = "//:protoc"
|
||
|
else:
|
||
|
minor = gencode_version[gencode_version.find(".") + 1:]
|
||
|
protoc = Label("@com_google_protobuf_v%s//:protoc" % minor)
|
||
|
|
||
|
gencode = [
|
||
|
"v%s/protobuf_unittest/UnittestProto.java" % gencode_version,
|
||
|
"v%s/com/google/protobuf/test/UnittestImport.java" % gencode_version,
|
||
|
"v%s/com/google/protobuf/test/UnittestImportPublic.java" % gencode_version,
|
||
|
]
|
||
|
native.genrule(
|
||
|
name = "unittest_proto_gencode_v" + gencode_version,
|
||
|
srcs = [
|
||
|
"//src/google/protobuf:unittest_proto_srcs",
|
||
|
],
|
||
|
outs = gencode,
|
||
|
cmd = "$(location %s) " % protoc +
|
||
|
"$(locations //src/google/protobuf:unittest_proto_srcs) " +
|
||
|
" -Isrc/ --java_out=$(@D)/v%s" % gencode_version,
|
||
|
tools = [protoc],
|
||
|
)
|
||
|
|
||
|
conformance_name = "conformance_v" + gencode_version
|
||
|
conformance_lib_name = conformance_name + "_lib"
|
||
|
native.java_library(
|
||
|
name = conformance_lib_name,
|
||
|
srcs = gencode,
|
||
|
deps = ["//java/core"],
|
||
|
tags = tags,
|
||
|
)
|
||
|
|
||
|
build_test(
|
||
|
name = name,
|
||
|
targets = [":" + conformance_lib_name],
|
||
|
tags = tags,
|
||
|
)
|