[bazel] Update gtest and deprecate //external:{gtest,gtest_main} (#7237)

This change updates the gtest-version used by Bazel.
Also, `//external:{gtest,gtest_main}` is deprecated so we can remove some
of the uses of the discouraged `bind` function.

RELNOTES[bazel]: Starting with Protobuf 3.13.0, building and running
Protobuf tests requires `@com_google_googletest//:{gtest,gtest_main}`
instead of `//external:{gtest,gtest_main}`. Use
`--@com_google_protobuf//:incompatible_use_com_google_googletest=true`
to verify your workspace is not affected by this change.
This commit is contained in:
Yannic 2020-03-03 00:15:22 +01:00 committed by GitHub
parent 398b801355
commit 2e51ad6344
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 11 deletions

3
.bazelignore Normal file
View File

@ -0,0 +1,3 @@
# These are fetched as external repositories.
third_party/benchmark
third_party/googletest

46
BUILD
View File

@ -1,5 +1,6 @@
# Bazel (https://bazel.build/) BUILD file for Protobuf.
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test", "objc_library", native_cc_proto_library = "cc_proto_library")
load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library")
load("@rules_proto//proto/private:native.bzl", "native_proto_common")
@ -10,6 +11,42 @@ licenses(["notice"])
exports_files(["LICENSE"])
################################################################################
# build configuration
################################################################################
string_flag(
name = "incompatible_use_com_google_googletest",
# TODO(yannic): Flip to `true` for `3.13.0`.
build_setting_default = "false",
values = ["true", "false"]
)
config_setting(
name = "use_com_google_googletest",
flag_values = {
"//:incompatible_use_com_google_googletest": "true"
},
)
GTEST = select({
"//:use_com_google_googletest": [
"@com_google_googletest//:gtest",
],
"//conditions:default": [
"//external:gtest",
],
})
GTEST_MAIN = select({
"//:use_com_google_googletest": [
"@com_google_googletest//:gtest_main",
],
"//conditions:default": [
"//external:gtest_main",
],
})
################################################################################
# ZLIB configuration
################################################################################
@ -533,8 +570,7 @@ cc_binary(
deps = [
":protobuf",
":protoc_lib",
"//external:gtest",
],
] + GTEST,
)
cc_test(
@ -546,8 +582,7 @@ cc_test(
],
deps = [
":protobuf_lite",
"//external:gtest_main",
],
] + GTEST_MAIN,
)
cc_test(
@ -650,8 +685,7 @@ cc_test(
":cc_test_protos",
":protobuf",
":protoc_lib",
"//external:gtest_main",
] + PROTOBUF_DEPS,
] + PROTOBUF_DEPS + GTEST_MAIN,
)
################################################################################

View File

@ -1,13 +1,20 @@
workspace(name = "com_google_protobuf")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
local_repository(
name = "com_google_protobuf_examples",
path = "examples",
)
local_repository(
name = "submodule_gmock",
path = "third_party/googletest",
http_archive(
name = "com_google_googletest",
sha256 = "9dc9157a9a1551ec7a7e43daea9a694a0bb5fb8bec81235d8a1e6ef64c716dcb",
strip_prefix = "googletest-release-1.10.0",
urls = [
"https://mirror.bazel.build/github.com/google/googletest/archive/release-1.10.0.tar.gz",
"https://github.com/google/googletest/archive/release-1.10.0.tar.gz",
],
)
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
@ -22,14 +29,16 @@ bind(
actual = "//util/python:python_headers",
)
# TODO(yannic): Remove in 3.13.0.
bind(
name = "gtest",
actual = "@submodule_gmock//:gtest",
actual = "@com_google_googletest//:gtest",
)
# TODO(yannic): Remove in 3.13.0.
bind(
name = "gtest_main",
actual = "@submodule_gmock//:gtest_main",
actual = "@com_google_googletest//:gtest_main",
)
jvm_maven_import_external(