Commit 52e27a3d authored by pwnall's avatar pwnall Committed by Commit bot

Roll googletest to 1.7.0+.

This is a (less ambitious) re-land of http://crrev.com/2852613002 which
was reverted due to content_browsertests crashes on ChromeOS. That CL is
a re-land of http://crrev.com/2779193002 which was reverted due to build
errors on Mac.

Instead of rolling Google Test to 1.8.0, this CL uses the last commit
before a breaking change was introduced. Details about the breakage are
in https://crbug.com/630705#c27 and https://crbug.com/630705#c28. It is
expected that rolling Google Test from there to the next usable version
will be much less disruptive.

GoogleTest (gtest) and GoogleMock (gmock) are now hosted into the same
googletest repository. In order to cope with this, the googletest
repository is now sourced at third_party/googletest.

The file/directory layout of Google Test is not yet considered stable.
To minimize disruption while Google Test stabilizes, Chromium code will
be insulated from third_party/googletest.

* testing/gtest/include/gtest/ and testing/gmock/include/gmock have
  been populated with headers that forward into the appropriate locations of
  third_party/googletest

* testing/BUILD.gn has been populated with the targets
  //testing/gtest(:gtest_main) and //testing/gmock(:gmock_main), which
  depend on the appropriate //third_party/googletest targets.

All Chromium code should keep depending on the targets and headers
in testing/{gtest,gmock} for now.

BUG=630705
TESTED=out/Default/content_browsertests --gtest_filter=MojoTest.Init
TESTED=ninja -C out/Default/ ced_unittests && ninja -C out/Default
TBR=rkc, dpranke

Review-Url: https://codereview.chromium.org/2856383002
Cr-Commit-Position: refs/heads/master@{#469551}
parent 81a539c7
......@@ -269,8 +269,6 @@ vs-chromium-project.txt
/sql/sql_unittests_run.xml
/sync/sync.xml
/sync_testserver.log
/testing/gmock
/testing/gtest
/testserver.log
/tools/luci-go/linux64/isolate
/tools/luci-go/mac64/isolate
......
......@@ -132,12 +132,6 @@ deps = {
'src/sdch/open-vcdiff':
Var('chromium_git') + '/external/github.com/google/open-vcdiff.git' + '@' + '2b9bd1fe548520e9355e457a134bab7e2f9c56c0',
'src/testing/gtest':
Var('chromium_git') + '/external/github.com/google/googletest.git' + '@' + '6f8a66431cb592dad629028a50b3dd418a408c87',
'src/testing/gmock':
Var('chromium_git') + '/external/googlemock.git' + '@' + '0421b6f358139f02e102c9c332ce19a33faf75be', # from svn revision 566
'src/third_party/freetype/src':
Var('chromium_git') + '/chromium/src/third_party/freetype2.git' + '@' + Var('freetype_revision'),
......@@ -156,6 +150,9 @@ deps = {
'src/third_party/colorama/src':
Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8',
'src/third_party/googletest/src':
Var('chromium_git') + '/external/github.com/google/googletest.git' + '@' + '43359642a1c16ad3f4fc575c7edd0cb935810815',
'src/third_party/icu':
Var('chromium_git') + '/chromium/deps/icu.git' + '@' + 'b34251f8b762f8e2112a89c587855ca4297fed96',
......
......@@ -5,7 +5,7 @@
#ifndef BASE_GTEST_PROD_UTIL_H_
#define BASE_GTEST_PROD_UTIL_H_
#include "testing/gtest/include/gtest/gtest_prod.h"
#include "testing/gtest/include/gtest/gtest_prod.h" // nogncheck
// This is a wrapper for gtest's FRIEND_TEST macro that friends
// test with all possible prefixes. This is very helpful when changing the test
......
......@@ -2,6 +2,13 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Chromium's GN configuration for gmock now lives at testing/gmock/BUILD.gn.
#
# This configuration is left in the tree because it is pulled by V8 and PDFium,
# and will be removed as soon as the projects switch off of it.
#
# Details at http://crbug.com/630705 and http://crrev.com/2779193002
config("gmock_config") {
# Gmock headers need to be able to find themselves.
include_dirs = [
......
......@@ -2,6 +2,13 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Chromium's GN configuration for gtest now lives at testing/gtest/BUILD.gn.
#
# This configuration is left in the tree because it is pulled by V8 and PDFium,
# and will be removed as soon as the projects switch off of it.
#
# Details at http://crbug.com/630705 and http://crrev.com/2779193002
import("//build_overrides/gtest.gni")
if (is_ios) {
import("//build/config/ios/ios_sdk.gni")
......
......@@ -14,7 +14,7 @@
#include "dbus/object_path.h"
#include "device/bluetooth/bluetooth_export.h"
#include "device/bluetooth/dbus/bluetooth_media_endpoint_service_provider.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
#include "testing/gtest/include/gtest/gtest_prod.h" // nogncheck
namespace bluez {
......
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# The file/directory layout of Google Test is not yet considered stable. Until
# it stabilizes, Chromium code MUST use this target instead of reaching directly
# into //third_party/googletest.
source_set("gmock") {
testonly = true
sources = [
"include/gmock/gmock-actions.h",
"include/gmock/gmock-generated-function-mockers.h",
"include/gmock/gmock-matchers.h",
"include/gmock/gmock.h",
]
deps = [
"//third_party/googletest:gmock",
]
public_configs = [
"//third_party/googletest:gmock_config",
"//third_party/googletest:gtest_config",
]
}
# The file/directory layout of Google Test is not yet considered stable. Until
# it stabilizes, Chromium code MUST use this target instead of reaching directly
# into //third_party/googletest.
source_set("gmock_main") {
testonly = true
deps = [
"//third_party/googletest:gmock_main",
]
}
thakis@chromium.org
pwnall@chromium.org
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googlemock/include/gmock/gmock-actions.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googlemock/include/gmock/gmock-generated-function-mockers.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googlemock/include/gmock/gmock-matchers.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googlemock/include/gmock/gmock.h"
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build_overrides/gtest.gni")
if (is_ios) {
import("//build/config/ios/ios_sdk.gni")
import("//build/buildflag_header.gni")
}
config("gtest_direct_config") {
visibility = [ ":*" ]
defines = [ "UNIT_TEST" ]
}
# The file/directory layout of Google Test is not yet considered stable. Until
# it stabilizes, Chromium code MUST use this target instead of reaching directly
# into //third_party/googletest.
static_library("gtest") {
testonly = true
sources = [
"include/gtest/gtest-death-test.h",
"include/gtest/gtest-message.h",
"include/gtest/gtest-param-test.h",
"include/gtest/gtest-spi.h",
"include/gtest/gtest.h",
"include/gtest/gtest_prod.h",
# This is a workaround for the issues below.
#
# 1) This target needs to be a static_library (not a source set) on Mac to
# avoid the build errors in
# https://codereview.chromium.org/2779193002#msg82.
# 2) A static_library must have at least one source file, to avoid build
# errors on Mac and Windows. https://crbug.com/710334
# 3) A static_library with complete_static_lib = true, which would not
# require adding the empty file, will result in duplicate symbols on
# Android. https://codereview.chromium.org/2852613002/#ps20001
"empty.cc",
]
deps = [
"//third_party/googletest:gtest",
]
public_configs = [ ":gtest_direct_config" ]
if (gtest_include_multiprocess) {
sources += [
"../multiprocess_func_list.cc",
"../multiprocess_func_list.h",
]
}
if (gtest_include_platform_test) {
sources += [ "../platform_test.h" ]
}
if ((is_mac || is_ios) && gtest_include_objc_support) {
if (is_ios) {
set_sources_assignment_filter([])
}
sources += [
"../gtest_mac.h",
"../gtest_mac.mm",
]
if (gtest_include_platform_test) {
sources += [ "../platform_test_mac.mm" ]
}
set_sources_assignment_filter(sources_assignment_filter)
}
if (is_ios && gtest_include_ios_coverage) {
sources += [
"../coverage_util_ios.h",
"../coverage_util_ios.mm",
]
deps += [ ":ios_enable_coverage" ]
}
}
# The file/directory layout of Google Test is not yet considered stable. Until
# it stabilizes, Chromium code MUST use this target instead of reaching directly
# into //third_party/googletest.
source_set("gtest_main") {
testonly = true
deps = [
"//third_party/googletest:gtest_main",
]
}
if (is_ios) {
buildflag_header("ios_enable_coverage") {
header = "ios_enable_coverage.h"
flags = [ "IOS_ENABLE_COVERAGE=$ios_enable_coverage" ]
}
}
thakis@chromium.org
pwnall@chromium.org
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googletest/include/gtest/gtest-death-test.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googletest/include/gtest/gtest-message.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googletest/include/gtest/gtest-param-test.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googletest/include/gtest/gtest-spi.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googletest/include/gtest/gtest.h"
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// The file/directory layout of Google Test is not yet considered stable. Until
// it stabilizes, Chromium code will use forwarding headers in testing/gtest
// and testing/gmock, instead of directly including files in
// third_party/googletest.
#include "third_party/googletest/src/googletest/include/gtest/gtest_prod.h"
......@@ -5,8 +5,8 @@
#ifndef TESTING_GTEST_MAC_H_
#define TESTING_GTEST_MAC_H_
#include <gtest/internal/gtest-port.h>
#include <gtest/gtest.h>
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h"
#ifdef GTEST_OS_MAC
......
......@@ -6,9 +6,9 @@
#include <string>
#include <gtest/gtest.h>
#include <gtest/internal/gtest-port.h>
#include <gtest/internal/gtest-string.h>
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h"
#include "third_party/googletest/src/googletest/include/gtest/internal/gtest-string.h"
#ifdef GTEST_OS_MAC
......
......@@ -12,7 +12,7 @@
#include "base/mac/scoped_nsautorelease_pool.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/gtest/include/gtest/internal/gtest-port.h"
#include "third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h"
TEST(GTestMac, ExpectNSEQ) {
base::mac::ScopedNSAutoreleasePool pool;
......
......@@ -66,6 +66,7 @@
/google_appengine_cloudstorage
/google_toolbox_for_mac/src
/googlemac
/googletest/src
/gvr-android-sdk/common_library.aar
/gvr-android-sdk/test-libraries/controller_test_api.aar
/gvr-android-sdk/libgvr_shim_static_arm.a
......
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
config("gtest_config") {
visibility = [ ":*" ] # gmock also shares this config.
defines = [
# In order to allow regex matches in gtest to be shared between Windows
# and other systems, we tell gtest to always use its internal engine.
"GTEST_HAS_POSIX_RE=0",
"GTEST_LANG_CXX11=1",
]
# Gtest headers need to be able to find themselves.
include_dirs = [ "src/googletest/include" ]
if (is_win) {
cflags = [ "/wd4800" ] # Unused variable warning.
}
}
config("gmock_config") {
# Gmock headers need to be able to find themselves.
include_dirs = [
"gmock_custom",
"src/googlemock/include",
]
}
# Do NOT depend on this directly. Use //testing/gtest instead.
# See README.chromium for details.
source_set("gtest") {
testonly = true
sources = [
"src/googletest/include/gtest/gtest-death-test.h",
"src/googletest/include/gtest/gtest-message.h",
"src/googletest/include/gtest/gtest-param-test.h",
"src/googletest/include/gtest/gtest-printers.h",
"src/googletest/include/gtest/gtest-spi.h",
"src/googletest/include/gtest/gtest-test-part.h",
"src/googletest/include/gtest/gtest-typed-test.h",
"src/googletest/include/gtest/gtest.h",
"src/googletest/include/gtest/gtest_pred_impl.h",
"src/googletest/include/gtest/internal/gtest-death-test-internal.h",
"src/googletest/include/gtest/internal/gtest-filepath.h",
"src/googletest/include/gtest/internal/gtest-internal.h",
"src/googletest/include/gtest/internal/gtest-linked_ptr.h",
"src/googletest/include/gtest/internal/gtest-param-util-generated.h",
"src/googletest/include/gtest/internal/gtest-param-util.h",
"src/googletest/include/gtest/internal/gtest-port.h",
"src/googletest/include/gtest/internal/gtest-string.h",
"src/googletest/include/gtest/internal/gtest-tuple.h",
"src/googletest/include/gtest/internal/gtest-type-util.h",
#"src/googletest/src/gtest-all.cc", # Not needed by our build.
"src/googletest/src/gtest-death-test.cc",
"src/googletest/src/gtest-filepath.cc",
"src/googletest/src/gtest-internal-inl.h",
"src/googletest/src/gtest-port.cc",
"src/googletest/src/gtest-printers.cc",
"src/googletest/src/gtest-test-part.cc",
"src/googletest/src/gtest-typed-test.cc",
"src/googletest/src/gtest.cc",
]
# Some files include "src/gtest-internal-inl.h".
include_dirs = [ "src/googletest" ]
all_dependent_configs = [ ":gtest_config" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
}
# Do NOT depend on this directly. Use //testing/gtest:gtest_main instead.
# See README.chromium for details.
source_set("gtest_main") {
testonly = true
sources = [
"src/googletest/src/gtest_main.cc",
]
deps = [
":gtest",
]
}
# Do NOT depend on this directly. Use //testing/gmock:gmock_main instead.
# See README.chromium for details.
source_set("gmock") {
testonly = true
sources = [
"src/googlemock/include/gmock/gmock-actions.h",
"src/googlemock/include/gmock/gmock-cardinalities.h",
"src/googlemock/include/gmock/gmock-generated-actions.h",
"src/googlemock/include/gmock/gmock-generated-function-mockers.h",
"src/googlemock/include/gmock/gmock-generated-matchers.h",
"src/googlemock/include/gmock/gmock-generated-nice-strict.h",
"src/googlemock/include/gmock/gmock-matchers.h",
"src/googlemock/include/gmock/gmock-spec-builders.h",
"src/googlemock/include/gmock/gmock.h",
"src/googlemock/include/gmock/internal/gmock-generated-internal-utils.h",
"src/googlemock/include/gmock/internal/gmock-internal-utils.h",
"src/googlemock/include/gmock/internal/gmock-port.h",
# gmock helpers.
"gmock_custom/gmock/internal/custom/gmock-port.h",
#"src/googlemock/src/gmock-all.cc", # Not needed by our build.
"src/googlemock/src/gmock-cardinalities.cc",
"src/googlemock/src/gmock-internal-utils.cc",
"src/googlemock/src/gmock-matchers.cc",
"src/googlemock/src/gmock-spec-builders.cc",
"src/googlemock/src/gmock.cc",
]
# This project includes some stuff form gtest's guts.
include_dirs = [ "src/googletest/include" ]
public_configs = [
":gmock_config",
":gtest_config",
]
}
# Do NOT depend on this directly. Use //testing/gmock:gmock_main instead.
# See README.chromium for details.
static_library("gmock_main") {
testonly = true
sources = [
"src/googlemock/src/gmock_main.cc",
]
deps = [
":gmock",
]
}
thakis@chromium.org
pwnall@chromium.org
phajdan.jr@chromium.org
dpranke@chromium.org
Name: Google Test: Google's C++ Testing Framework
Short Name: googletest
URL: https://github.com/google/googletest.git
Version: 1.7.0.git-43359642a1c16ad3f4fc575c7edd0cb935810815
License: BSD
Security critical: no
Google Test is imported as-is, to facilitate version bumping. However, the
file/directory layout of Google Test is not yet considered stable. Therefore,
until Google Test's layout stabilizes, Chromium code MUST NOT depend on it
directly. Instead, Chromium code MUST:
* #include the headers in testing/gtest and testing/gmock
* use //testing/gtest(:gtest_main) and //testing/gmock(:gmock_main) in BUILD.gn
deps
This will allow us to adapt to Google Test changes with minimal disruption.
......@@ -14,14 +14,12 @@ namespace std {
// <20120322 below implies pre-4.7.0. In addition we blacklist several version
// that released after 4.7.0 from pre-4.7.0 branch. 20120702 implies 4.5.4, and
// 20121127 implies 4.6.4.
#if defined(__GLIBCXX__) && \
(__GLIBCXX__ < 20120322 || \
__GLIBCXX__ == 20120702 || \
__GLIBCXX__ == 20121127)
#if defined(__GLIBCXX__) && \
(__GLIBCXX__ < 20120322 || __GLIBCXX__ == 20120702 || \
__GLIBCXX__ == 20121127)
template <typename T>
using is_default_constructible = std::is_constructible<T>;
#endif
}
#endif // TESTING_GMOCK_CUSTOM_GMOCK_INTERNAL_CUSTOM_GMOCK_PORT_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment