Skip to content

Commit

Permalink
[bazel] Update gtest and deprecate //external:{gtest,gtest_main} (#7237)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Yannic authored Mar 2, 2020
1 parent 398b801 commit 2e51ad6
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 11 deletions.
3 changes: 3 additions & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# These are fetched as external repositories.
third_party/benchmark
third_party/googletest
46 changes: 40 additions & 6 deletions BUILD
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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
################################################################################
Expand Down Expand Up @@ -533,8 +570,7 @@ cc_binary(
deps = [
":protobuf",
":protoc_lib",
"//external:gtest",
],
] + GTEST,
)

cc_test(
Expand All @@ -546,8 +582,7 @@ cc_test(
],
deps = [
":protobuf_lite",
"//external:gtest_main",
],
] + GTEST_MAIN,
)

cc_test(
Expand Down Expand Up @@ -650,8 +685,7 @@ cc_test(
":cc_test_protos",
":protobuf",
":protoc_lib",
"//external:gtest_main",
] + PROTOBUF_DEPS,
] + PROTOBUF_DEPS + GTEST_MAIN,
)

################################################################################
Expand Down
19 changes: 14 additions & 5 deletions WORKSPACE
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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(
Expand Down

0 comments on commit 2e51ad6

Please sign in to comment.