load("@bazel_skylib//:bzl_library.bzl", "bzl_library") load("@rules_cc//cc:cc_binary.bzl", "cc_binary") load("@rules_cc//cc:cc_test.bzl", "cc_test") load("@rules_cc//cc:defs.bzl", "cc_library") load("@rules_shell//shell:sh_binary.bzl", "sh_binary") load("@rules_shell//shell:sh_test.bzl", "sh_test") 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:java_lite_proto_library.bzl", "java_lite_proto_library") load("//bazel:java_proto_library.bzl", "java_proto_library") load("//bazel:proto_library.bzl", "proto_library") load("//upb/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 = "2024", minimum_edition = "2023", # Test with HEAD protoc for any behavior change, other usages don't need this. protoc = "//src/google/protobuf/compiler:protoc_minimal", ) compile_edition_defaults( name = "test_defaults_2023", testonly = True, srcs = ["//src/google/protobuf:unittest_features_proto"], maximum_edition = "2023", minimum_edition = "2023", # Test with HEAD protoc for any behavior change, other usages don't need this. protoc = "//src/google/protobuf/compiler:protoc_minimal", ) compile_edition_defaults( name = "test_defaults_future", testonly = True, srcs = ["//src/google/protobuf:unittest_features_proto"], maximum_edition = "99997_TEST_ONLY", minimum_edition = "2023", # Test with HEAD protoc for any behavior change, other usages don't need this. protoc = "//src/google/protobuf/compiler:protoc_minimal", ) 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", # Test with HEAD protoc for any behavior change, other usages don't need this. protoc = "//src/google/protobuf/compiler:protoc_minimal", ) 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", ) embed_edition_defaults( name = "embed_test_defaults_decimal_array", testonly = True, defaults = ":test_defaults_2023", encoding = "decimal_array", output = "defaults_test_embedded_decimal_array.h", placeholder = "DEFAULTS_VALUE", template = "defaults_test_embedded_decimal_array.h.template", ) embed_edition_defaults( name = "embed_test_defaults_hex_array", testonly = True, defaults = ":test_defaults_2023", encoding = "hex_array", output = "defaults_test_embedded_hex_array.h", placeholder = "DEFAULTS_VALUE", template = "defaults_test_embedded_hex_array.h.template", ) cc_binary( name = "internal_defaults_escape", srcs = ["internal_defaults_escape.cc"], malloc = "@bazel_tools//tools/cpp:malloc", deps = [ "//src/google/protobuf", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/flags:parse", "@abseil-cpp//absl/log:absl_log", "@abseil-cpp//absl/strings", ], ) cc_library( name = "defaults_test_embedded", testonly = True, hdrs = [ "defaults_test_embedded.h", "defaults_test_embedded_base64.h", "defaults_test_embedded_decimal_array.h", "defaults_test_embedded_hex_array.h", ], ) cc_library( name = "edition_defaults_test_utils", testonly = True, srcs = ["edition_defaults_test_utils.cc"], hdrs = ["edition_defaults_test_utils.h"], visibility = [ "//pkg:__subpackages__", "//src/google/protobuf:__pkg__", "//src/google/protobuf/compiler:__subpackages__", ], deps = [ "//src/google/protobuf", "//src/google/protobuf:test_textproto", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/strings:string_view", "@abseil-cpp//absl/types:optional", "@googletest//:gtest", ], ) cc_test( name = "edition_defaults_test_utils_test", srcs = ["edition_defaults_test_utils_test.cc"], deps = [ ":edition_defaults_test_utils", "//src/google/protobuf", "//src/google/protobuf:test_textproto", "//src/google/protobuf:unittest_features_cc_proto", "@abseil-cpp//absl/types:optional", "@googletest//:gtest", "@googletest//:gtest_main", ], ) 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", "//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", "@abseil-cpp//absl/memory", "@abseil-cpp//absl/status", "@abseil-cpp//absl/status:statusor", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:string_view", "@bazel_tools//tools/cpp/runfiles", "@googletest//:gtest", "@googletest//:gtest_main", ], ) proto_library( name = "test_messages_proto2_editions_proto", testonly = True, srcs = ["golden/test_messages_proto2_editions.proto"], visibility = [ "//conformance/test_protos:__pkg__", "//net/proto2/util/converter/internal/conformance:__pkg__", ], ) 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"], visibility = [ "//conformance/test_protos:__pkg__", "//net/proto2/util/converter/internal/conformance:__pkg__", ], deps = [ "//:any_proto", "//:duration_proto", "//:empty_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_type_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 = ["input/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", "//src/google/protobuf", "//src/google/protobuf:test_textproto", "@googletest//:gtest", "@googletest//:gtest_main", ], ) cc_test( name = "generated_reflection_test", srcs = ["generated_reflection_test.cc"], deps = [ ":test_messages_proto2_editions_cc_proto", "@googletest//:gtest", "@googletest//:gtest_main", ], ) # Define a test suite to allow us to trigger these tests from //src expansions. test_suite(name = "all_tests")