blob: dea2901bb73968fac0ec217ce9d9ffb81763c80a [file] [log] [blame]
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("//:protobuf.bzl", "internal_objc_proto_library", "internal_php_proto_library", "internal_py_proto_library")
load("//bazel:cc_proto_library.bzl", "cc_proto_library")
load("//bazel:upb_proto_library.bzl", "upb_c_proto_library", "upb_proto_reflection_library")
load(":defaults.bzl", "compile_edition_defaults", "embed_edition_defaults")
bzl_library(
name = "defaults",
srcs = ["defaults.bzl"],
visibility = ["//visibility:public"],
deps = ["//bazel/common:proto_info_bzl"],
)
# Aggregate all the features owned by the Protobuf repo.
compile_edition_defaults(
name = "protobuf_defaults",
testonly = True,
srcs = [
"//java/core:java_features_proto",
"//src/google/protobuf:cpp_features_proto",
],
maximum_edition = "2023",
minimum_edition = "2023",
)
compile_edition_defaults(
name = "test_defaults_2023",
testonly = True,
srcs = ["//src/google/protobuf:unittest_features_proto"],
maximum_edition = "2023",
minimum_edition = "2023",
)
compile_edition_defaults(
name = "test_defaults_future",
testonly = True,
srcs = ["//src/google/protobuf:unittest_features_proto"],
maximum_edition = "99997_TEST_ONLY",
minimum_edition = "2023",
)
compile_edition_defaults(
name = "test_defaults_far_future",
testonly = True,
srcs = ["//src/google/protobuf:unittest_features_proto"],
maximum_edition = "99999_TEST_ONLY",
minimum_edition = "99997_TEST_ONLY",
)
embed_edition_defaults(
name = "embed_test_defaults",
testonly = True,
defaults = ":test_defaults_2023",
output = "defaults_test_embedded.h",
placeholder = "DEFAULTS_VALUE",
template = "defaults_test_embedded.h.template",
)
embed_edition_defaults(
name = "embed_test_defaults_base64",
testonly = True,
defaults = ":test_defaults_2023",
encoding = "base64",
output = "defaults_test_embedded_base64.h",
placeholder = "DEFAULTS_VALUE",
template = "defaults_test_embedded_base64.h.template",
)
cc_binary(
name = "internal_defaults_escape",
srcs = ["internal_defaults_escape.cc"],
# This needs to be public for users of embed_edition_defaults.
visibility = ["//visibility:public"],
deps = [
"//src/google/protobuf",
"@com_google_absl//absl/flags:flag",
"@com_google_absl//absl/flags:parse",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "defaults_test_embedded",
hdrs = [
"defaults_test_embedded.h",
"defaults_test_embedded_base64.h",
],
)
cc_test(
name = "defaults_test",
srcs = ["defaults_test.cc"],
data = [
":protobuf_defaults",
":test_defaults_2023",
":test_defaults_far_future",
":test_defaults_future",
],
deps = [
":defaults_test_embedded",
"//:protobuf",
"//java/core:java_features_cc_proto",
"//src/google/protobuf",
"//src/google/protobuf:cpp_features_cc_proto",
"//src/google/protobuf:port",
"//src/google/protobuf:protobuf_lite",
"//src/google/protobuf:test_textproto",
"//src/google/protobuf:unittest_features_cc_proto",
"//src/google/protobuf/stubs",
"//src/google/protobuf/testing",
"//src/google/protobuf/testing:file",
"@bazel_tools//tools/cpp/runfiles",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
proto_library(
name = "test_messages_proto2_editions_proto",
testonly = True,
srcs = ["golden/test_messages_proto2_editions.proto"],
)
cc_proto_library(
name = "test_messages_proto2_editions_cc_proto",
testonly = True,
visibility = ["//conformance:__pkg__"],
deps = [":test_messages_proto2_editions_proto"],
)
internal_objc_proto_library(
name = "test_messages_proto2_editions_objc_proto",
testonly = True,
srcs = ["golden/test_messages_proto2_editions.proto"],
visibility = ["//conformance:__pkg__"],
)
java_proto_library(
name = "test_messages_proto2_editions_java_proto",
testonly = True,
visibility = ["//conformance:__pkg__"],
deps = [":test_messages_proto2_editions_proto"],
)
java_lite_proto_library(
name = "test_messages_proto2_editions_java_proto_lite",
testonly = True,
visibility = ["//conformance:__pkg__"],
deps = [":test_messages_proto2_editions_proto"],
)
internal_py_proto_library(
name = "test_messages_proto2_editions_py_pb2",
testonly = True,
srcs = ["golden/test_messages_proto2_editions.proto"],
srcs_version = "PY2AND3",
visibility = [
"//conformance:__pkg__",
],
)
upb_c_proto_library(
name = "test_messages_proto2_editions_upb_proto",
testonly = 1,
deps = [":test_messages_proto2_editions_proto"],
)
upb_proto_reflection_library(
name = "test_messages_proto2_editions_upbdefs",
testonly = 1,
visibility = ["//upb/conformance:__pkg__"],
deps = [":test_messages_proto2_editions_proto"],
)
proto_library(
name = "test_messages_proto3_editions_proto",
testonly = True,
srcs = ["golden/test_messages_proto3_editions.proto"],
deps = [
"//:any_proto",
"//:duration_proto",
"//:field_mask_proto",
"//:struct_proto",
"//:timestamp_proto",
"//:wrappers_proto",
],
)
cc_proto_library(
name = "test_messages_proto3_editions_cc_proto",
testonly = True,
visibility = ["//conformance:__pkg__"],
deps = [":test_messages_proto3_editions_proto"],
)
internal_objc_proto_library(
name = "test_messages_proto3_editions_objc_proto",
testonly = True,
srcs = ["golden/test_messages_proto3_editions.proto"],
includes = [
".",
"src",
],
proto_deps = ["//:well_known_type_protos"],
visibility = ["//conformance:__pkg__"],
)
java_proto_library(
name = "test_messages_proto3_editions_java_proto",
testonly = True,
visibility = ["//conformance:__pkg__"],
deps = [":test_messages_proto3_editions_proto"],
)
java_lite_proto_library(
name = "test_messages_proto3_editions_java_proto_lite",
testonly = True,
visibility = ["//conformance:__pkg__"],
deps = [":test_messages_proto3_editions_proto"],
)
internal_php_proto_library(
name = "test_messages_proto3_editions_php_proto",
testonly = 1,
srcs = ["golden/test_messages_proto3_editions.proto"],
outs = [
"GPBMetadata/TestMessagesProto3Editions.php",
"Protobuf_test_messages/Editions/Proto3/EnumOnlyProto3.php",
"Protobuf_test_messages/Editions/Proto3/EnumOnlyProto3/PBBool.php",
"Protobuf_test_messages/Editions/Proto3/ForeignEnum.php",
"Protobuf_test_messages/Editions/Proto3/ForeignMessage.php",
"Protobuf_test_messages/Editions/Proto3/NullHypothesisProto3.php",
"Protobuf_test_messages/Editions/Proto3/TestAllTypesProto3.php",
"Protobuf_test_messages/Editions/Proto3/TestAllTypesProto3/AliasedEnum.php",
"Protobuf_test_messages/Editions/Proto3/TestAllTypesProto3/NestedEnum.php",
"Protobuf_test_messages/Editions/Proto3/TestAllTypesProto3/NestedMessage.php",
],
enable_editions = True,
includes = [
"golden",
"src",
],
proto_deps = ["//:well_known_protos"],
visibility = ["//conformance:__pkg__"],
)
internal_py_proto_library(
name = "test_messages_proto3_editions_py_pb2",
testonly = True,
srcs = ["golden/test_messages_proto3_editions.proto"],
srcs_version = "PY2AND3",
visibility = [
"//conformance:__pkg__",
],
deps = ["//python:well_known_types_py_pb2"],
)
upb_c_proto_library(
name = "test_messages_proto3_editions_upb_proto",
testonly = 1,
deps = [":test_messages_proto3_editions_proto"],
)
upb_proto_reflection_library(
name = "test_messages_proto3_editions_upbdefs",
testonly = 1,
visibility = ["//upb/conformance:__pkg__"],
deps = ["test_messages_proto3_editions_proto"],
)
# Export these for conformance tests for ruby and C# codegen.
exports_files(
[
"golden/test_messages_proto2_editions.proto",
"golden/test_messages_proto3_editions.proto",
],
visibility = [
"//ruby:__pkg__",
"//src/google/protobuf/csharp:__pkg__",
],
)
proto_library(
name = "test_editions_default_features_proto",
testonly = True,
srcs = ["proto/test_editions_default_features.proto"],
)
cc_proto_library(
name = "test_editions_default_features_cc_proto",
testonly = True,
deps = [":test_editions_default_features_proto"],
)
cc_test(
name = "generated_files_test",
srcs = ["generated_files_test.cc"],
deps = [
":test_editions_default_features_cc_proto",
":test_messages_proto2_editions_cc_proto",
":test_messages_proto3_editions_cc_proto",
"//:protobuf",
"//src/google/protobuf:test_textproto",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "generated_reflection_test",
srcs = ["generated_reflection_test.cc"],
deps = [
":test_messages_proto2_editions_cc_proto",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
# Define a test suite to allow us to trigger these tests from //src expansions.
test_suite(name = "all_tests")