Use generic MOCK_METHOD macros
These macros were introduced in 2018. See
https://github.com/google/googletest/commit/c5f08bf.
Mark mocks "override" where needed and move
"-Wno-inconsistent-missing-override" to gmock_all_test since
googletest/googlemock/test/gmock-function-mocker_test.cc doesn't always
specify "override" on mocks.
Change-Id: I16f81ebfe18679644f1a49de1092c956cb8cd0b7
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3079439
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
GitOrigin-RevId: 79d85979e6738ffa0f401813f1c9ef787419b9a5
diff --git a/client/prune_crash_reports_test.cc b/client/prune_crash_reports_test.cc
index 32f8388..333c37e 100644
--- a/client/prune_crash_reports_test.cc
+++ b/client/prune_crash_reports_test.cc
@@ -36,22 +36,39 @@
class MockDatabase : public CrashReportDatabase {
public:
// CrashReportDatabase:
- MOCK_METHOD0(GetSettings, Settings*());
- MOCK_METHOD1(PrepareNewCrashReport,
- OperationStatus(std::unique_ptr<NewReport>*));
- MOCK_METHOD2(LookUpCrashReport, OperationStatus(const UUID&, Report*));
- MOCK_METHOD1(GetPendingReports, OperationStatus(std::vector<Report>*));
- MOCK_METHOD1(GetCompletedReports, OperationStatus(std::vector<Report>*));
- MOCK_METHOD3(GetReportForUploading,
- OperationStatus(const UUID&,
- std::unique_ptr<const UploadReport>*,
- bool report_metrics));
- MOCK_METHOD3(RecordUploadAttempt,
- OperationStatus(UploadReport*, bool, const std::string&));
- MOCK_METHOD2(SkipReportUpload,
- OperationStatus(const UUID&, Metrics::CrashSkippedReason));
- MOCK_METHOD1(DeleteReport, OperationStatus(const UUID&));
- MOCK_METHOD1(RequestUpload, OperationStatus(const UUID&));
+ MOCK_METHOD(Settings*, GetSettings, (), (override));
+ MOCK_METHOD(OperationStatus,
+ PrepareNewCrashReport,
+ (std::unique_ptr<NewReport>*),
+ (override));
+ MOCK_METHOD(OperationStatus,
+ LookUpCrashReport,
+ (const UUID&, Report*),
+ (override));
+ MOCK_METHOD(OperationStatus,
+ GetPendingReports,
+ (std::vector<Report>*),
+ (override));
+ MOCK_METHOD(OperationStatus,
+ GetCompletedReports,
+ (std::vector<Report>*),
+ (override));
+ MOCK_METHOD(OperationStatus,
+ GetReportForUploading,
+ (const UUID&,
+ std::unique_ptr<const UploadReport>*,
+ bool report_metrics),
+ (override));
+ MOCK_METHOD(OperationStatus,
+ RecordUploadAttempt,
+ (UploadReport*, bool, const std::string&),
+ (override));
+ MOCK_METHOD(OperationStatus,
+ SkipReportUpload,
+ (const UUID&, Metrics::CrashSkippedReason),
+ (override));
+ MOCK_METHOD(OperationStatus, DeleteReport, (const UUID&), (override));
+ MOCK_METHOD(OperationStatus, RequestUpload, (const UUID&), (override));
// Google Mock doesn't support mocking methods with non-copyable types such as
// unique_ptr.
@@ -158,6 +175,7 @@
bool lhs_executed;
bool rhs_executed;
} kTests[] = {
+ // clang-format off
{"false && false",
BinaryPruneCondition::AND, false, false,
false, true, false},
@@ -182,6 +200,7 @@
{"true || true",
BinaryPruneCondition::OR, true, true,
true, true, false},
+ // clang-format on
};
for (const auto& test : kTests) {
SCOPED_TRACE(test.name);
@@ -215,18 +234,18 @@
}
std::mt19937 urng(std::random_device{}());
std::shuffle(reports.begin(), reports.end(), urng);
- std::vector<CrashReportDatabase::Report> pending_reports(
- reports.begin(), reports.begin() + 5);
+ std::vector<CrashReportDatabase::Report> pending_reports(reports.begin(),
+ reports.begin() + 5);
std::vector<CrashReportDatabase::Report> completed_reports(
reports.begin() + 5, reports.end());
MockDatabase db;
- EXPECT_CALL(db, GetPendingReports(_)).WillOnce(DoAll(
- SetArgPointee<0>(pending_reports),
- Return(CrashReportDatabase::kNoError)));
- EXPECT_CALL(db, GetCompletedReports(_)).WillOnce(DoAll(
- SetArgPointee<0>(completed_reports),
- Return(CrashReportDatabase::kNoError)));
+ EXPECT_CALL(db, GetPendingReports(_))
+ .WillOnce(DoAll(SetArgPointee<0>(pending_reports),
+ Return(CrashReportDatabase::kNoError)));
+ EXPECT_CALL(db, GetCompletedReports(_))
+ .WillOnce(DoAll(SetArgPointee<0>(completed_reports),
+ Return(CrashReportDatabase::kNoError)));
for (size_t i = 0; i < reports.size(); ++i) {
EXPECT_CALL(db, DeleteReport(TestUUID(i)))
.WillOnce(Return(CrashReportDatabase::kNoError));
diff --git a/third_party/googletest/BUILD.gn b/third_party/googletest/BUILD.gn
index ee3485d..de1c84d 100644
--- a/third_party/googletest/BUILD.gn
+++ b/third_party/googletest/BUILD.gn
@@ -248,17 +248,6 @@
config("googlemock_public_config") {
include_dirs = [ "$googletest_dir/googlemock/include" ]
-
- if (crashpad_is_clang) {
- cflags_cc = [
- # The MOCK_METHODn() macros do not specify “override”, which triggers
- # this warning in users: “error: 'Method' overrides a member function
- # but is not marked 'override'
- # [-Werror,-Winconsistent-missing-override]”. Suppress these warnings
- # until https://github.com/google/googletest/issues/533 is fixed.
- "-Wno-inconsistent-missing-override",
- ]
- }
}
static_library("googlemock") {
@@ -331,6 +320,10 @@
if (crashpad_is_clang) {
cflags_cc = [
+ # googletest/googlemock/test/gmock-function-mocker_test.cc does not
+ # always use the override modifier with MOCK_METHOD.
+ "-Wno-inconsistent-missing-override",
+
# For googletest/googlemock/test/gmock-matchers_test.cc’s
# testing::googlemock_matchers_test::Unprintable::c_.
"-Wno-unused-private-field",
@@ -341,7 +334,6 @@
# TODO: Correct SDK in vc\tools\msvc\14.14.26428\include\functional
cflags = [ "/wd4789" ] # VAR of size N bytes will be overrun
}
-
}
test("gmock_link_test") {
diff --git a/util/file/file_io_test.cc b/util/file/file_io_test.cc
index cea1855..fc61857 100644
--- a/util/file/file_io_test.cc
+++ b/util/file/file_io_test.cc
@@ -51,7 +51,7 @@
return ReadExactly(reinterpret_cast<void*>(data), size, can_log);
}
- MOCK_METHOD3(ReadInt, FileOperationResult(uintptr_t, size_t, bool));
+ MOCK_METHOD(FileOperationResult, ReadInt, (uintptr_t, size_t, bool));
// ReadExactlyInternal:
FileOperationResult Read(void* data, size_t size, bool can_log) {
@@ -248,7 +248,7 @@
return WriteAll(reinterpret_cast<const void*>(data), size);
}
- MOCK_METHOD2(WriteInt, FileOperationResult(uintptr_t, size_t));
+ MOCK_METHOD(FileOperationResult, WriteInt, (uintptr_t, size_t));
// WriteAllInternal:
FileOperationResult Write(const void* data, size_t size) {
diff --git a/util/file/file_reader_test.cc b/util/file/file_reader_test.cc
index ed6ee86..ea2dd35 100644
--- a/util/file/file_reader_test.cc
+++ b/util/file/file_reader_test.cc
@@ -42,7 +42,7 @@
return ReadExactly(reinterpret_cast<void*>(data), size);
}
- MOCK_METHOD2(ReadInt, FileOperationResult(uintptr_t, size_t));
+ MOCK_METHOD(FileOperationResult, ReadInt, (uintptr_t, size_t));
// FileReaderInterface:
FileOperationResult Read(void* data, size_t size) override {
@@ -50,7 +50,7 @@
}
// FileSeekerInterface:
- MOCK_METHOD2(Seek, FileOffset(FileOffset, int));
+ MOCK_METHOD(FileOffset, Seek, (FileOffset, int), (override));
private:
DISALLOW_COPY_AND_ASSIGN(MockFileReader);
diff --git a/util/mach/child_port_server_test.cc b/util/mach/child_port_server_test.cc
index 984d64a..451caa8 100644
--- a/util/mach/child_port_server_test.cc
+++ b/util/mach/child_port_server_test.cc
@@ -89,13 +89,14 @@
class MockChildPortServerInterface : public ChildPortServer::Interface {
public:
- MOCK_METHOD6(HandleChildPortCheckIn,
- kern_return_t(child_port_server_t server,
- const child_port_token_t token,
- mach_port_t port,
- mach_msg_type_name_t right_type,
- const mach_msg_trailer_t* trailer,
- bool* destroy_request));
+ MOCK_METHOD(kern_return_t,
+ HandleChildPortCheckIn,
+ (child_port_server_t server,
+ const child_port_token_t token,
+ mach_port_t port,
+ mach_msg_type_name_t right_type,
+ const mach_msg_trailer_t* trailer,
+ bool* destroy_request));
};
TEST(ChildPortServer, MockChildPortCheckIn) {
diff --git a/util/mach/exc_server_variants_test.cc b/util/mach/exc_server_variants_test.cc
index 287551b..836048b 100644
--- a/util/mach/exc_server_variants_test.cc
+++ b/util/mach/exc_server_variants_test.cc
@@ -371,8 +371,8 @@
// are identical.
using MachExceptionRaiseStateReply = ExceptionRaiseStateReply;
-struct __attribute__((packed,
- aligned(4))) MachExceptionRaiseStateIdentityRequest {
+struct __attribute__((packed, aligned(4)))
+MachExceptionRaiseStateIdentityRequest {
MachExceptionRaiseStateIdentityRequest() {
memset(this, 0xa5, sizeof(*this));
Head.msgh_bits =
@@ -509,17 +509,18 @@
trailer);
}
- MOCK_METHOD10(MockCatchMachException,
- kern_return_t(exception_behavior_t behavior,
- exception_handler_t exception_port,
- thread_t thread,
- task_t task,
- exception_type_t exception,
- const ConstExceptionCodes* exception_codes,
- thread_state_flavor_t* flavor,
- const ConstThreadStateAndCount* old_thread_state,
- ThreadStateAndCount* new_thread_state,
- const mach_msg_trailer_t* trailer));
+ MOCK_METHOD(kern_return_t,
+ MockCatchMachException,
+ (exception_behavior_t behavior,
+ exception_handler_t exception_port,
+ thread_t thread,
+ task_t task,
+ exception_type_t exception,
+ const ConstExceptionCodes* exception_codes,
+ thread_state_flavor_t* flavor,
+ const ConstThreadStateAndCount* old_thread_state,
+ ThreadStateAndCount* new_thread_state,
+ const mach_msg_trailer_t* trailer));
};
// Matcher for ConstExceptionCodes, testing that it carries 2 codes matching
diff --git a/util/mach/notify_server_test.cc b/util/mach/notify_server_test.cc
index 5e05c6d..40a3826 100644
--- a/util/mach/notify_server_test.cc
+++ b/util/mach/notify_server_test.cc
@@ -165,30 +165,39 @@
public:
// NotifyServer::Interface:
- MOCK_METHOD3(DoMachNotifyPortDeleted,
- kern_return_t(notify_port_t notify,
- mach_port_name_t name,
- const mach_msg_trailer_t* trailer));
+ MOCK_METHOD(kern_return_t,
+ DoMachNotifyPortDeleted,
+ (notify_port_t notify,
+ mach_port_name_t name,
+ const mach_msg_trailer_t* trailer),
+ (override));
- MOCK_METHOD4(DoMachNotifyPortDestroyed,
- kern_return_t(notify_port_t notify,
- mach_port_t rights,
- const mach_msg_trailer_t* trailer,
- bool* destroy_request));
+ MOCK_METHOD(kern_return_t,
+ DoMachNotifyPortDestroyed,
+ (notify_port_t notify,
+ mach_port_t rights,
+ const mach_msg_trailer_t* trailer,
+ bool* destroy_request),
+ (override));
- MOCK_METHOD3(DoMachNotifyNoSenders,
- kern_return_t(notify_port_t notify,
- mach_port_mscount_t mscount,
- const mach_msg_trailer_t* trailer));
+ MOCK_METHOD(kern_return_t,
+ DoMachNotifyNoSenders,
+ (notify_port_t notify,
+ mach_port_mscount_t mscount,
+ const mach_msg_trailer_t* trailer),
+ (override));
- MOCK_METHOD2(DoMachNotifySendOnce,
- kern_return_t(notify_port_t notify,
- const mach_msg_trailer_t* trailer));
+ MOCK_METHOD(kern_return_t,
+ DoMachNotifySendOnce,
+ (notify_port_t notify, const mach_msg_trailer_t* trailer),
+ (override));
- MOCK_METHOD3(DoMachNotifyDeadName,
- kern_return_t(notify_port_t notify,
- mach_port_name_t name,
- const mach_msg_trailer_t* trailer));
+ MOCK_METHOD(kern_return_t,
+ DoMachNotifyDeadName,
+ (notify_port_t notify,
+ mach_port_name_t name,
+ const mach_msg_trailer_t* trailer),
+ (override));
protected:
NotifyServerTestBase() : testing::Test(), NotifyServer::Interface() {}
@@ -269,9 +278,7 @@
}
// testing::Test:
- void TearDown() override {
- server_port_.reset();
- }
+ void TearDown() override { server_port_.reset(); }
private:
base::mac::ScopedMachReceiveRight server_port_;
@@ -520,7 +527,7 @@
ResultOf(DeadNameRightRefCount, 2)),
ResultOf(AuditPIDFromMachMessageTrailer, 0)))
.WillOnce(
- DoAll(WithArg<1>(Invoke(MachPortDeallocate)), Return(MIG_NO_REPLY)))
+ DoAll(WithArg<1>(Invoke(MachPortDeallocate)), Return(MIG_NO_REPLY)))
.RetiresOnSaturation();
receive_right.reset();