Add simple conformance test that builds the old gencode against the current runtime.
PiperOrigin-RevId: 631486123pull/16760/head
parent
ae17e81e42
commit
12af9ade1d
15
WORKSPACE
15
WORKSPACE
|
@ -226,3 +226,18 @@ crates_repository(
|
|||
|
||||
load("@crate_index//:defs.bzl", "crate_repositories")
|
||||
crate_repositories()
|
||||
|
||||
# For testing runtime against old gencode from a previous major version.
|
||||
http_archive(
|
||||
name = "com_google_protobuf_v25.0",
|
||||
strip_prefix = "protobuf-25.0",
|
||||
url = "https://github.com/protocolbuffers/protobuf/releases/download/v25.0/protobuf-25.0.tar.gz",
|
||||
)
|
||||
|
||||
# Needed as a dependency of @com_google_protobuf_v25.x, which was before
|
||||
# utf8_range was merged in.
|
||||
http_archive(
|
||||
name = "utf8_range",
|
||||
strip_prefix = "utf8_range-d863bc33e15cba6d873c878dcca9e6fe52b2f8cb",
|
||||
url = "https://github.com/protocolbuffers/utf8_range/archive/d863bc33e15cba6d873c878dcca9e6fe52b2f8cb.zip",
|
||||
)
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# Simple build tests for compatibility of gencode from previous major versions
|
||||
# with the current runtime.
|
||||
#
|
||||
# To add more test cases in Java, use java_runtime_conformance as below, and add
|
||||
# the corresponding http_archive in the WORKSPACE file for the version.
|
||||
|
||||
load("//compatibility:runtime_conformance.bzl", "java_runtime_conformance")
|
||||
|
||||
# main gencode builds with main runtime as a proof of concept.
|
||||
java_runtime_conformance(
|
||||
name = "java_conformance_main",
|
||||
gencode_version = "main",
|
||||
)
|
||||
|
||||
# Generates a build_test named "conformance_v3.25.0"
|
||||
java_runtime_conformance(
|
||||
name = "java_conformance_v3.25.0",
|
||||
gencode_version = "3.25.0",
|
||||
tags = ["manual"],
|
||||
)
|
|
@ -0,0 +1,53 @@
|
|||
"""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,
|
||||
)
|
|
@ -840,6 +840,16 @@ filegroup(
|
|||
visibility = ["//:__subpackages__"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "unittest_proto_srcs",
|
||||
srcs = [
|
||||
"unittest.proto",
|
||||
"unittest_import.proto",
|
||||
"unittest_import_public.proto",
|
||||
],
|
||||
visibility = ["//:__subpackages__"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "test_proto_editions_srcs",
|
||||
srcs = [
|
||||
|
|
Loading…
Reference in New Issue