diff options
author | Gennadiy Civil <gennadiycivil@users.noreply.github.com> | 2017-08-21 10:37:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-21 10:37:53 -0400 |
commit | 675686a139a731a2c796633e67e9421792363709 (patch) | |
tree | c8fd5daf18f2a8dc65d6a8a2088f328bf4cd81d5 /googlemock | |
parent | 780bae0facea90a5b2105cbc09e87d99887c2e23 (diff) | |
parent | 1ee8079651584b6bcc444f4b7a66dd2c65a79eb6 (diff) | |
download | googletest-675686a139a731a2c796633e67e9421792363709.tar.gz googletest-675686a139a731a2c796633e67e9421792363709.tar.bz2 googletest-675686a139a731a2c796633e67e9421792363709.zip |
Merge pull request #1206 from ShadowIce/methodname-in-exception
Add function name to exception if there's no default action
Diffstat (limited to 'googlemock')
-rw-r--r-- | googlemock/src/gmock-spec-builders.cc | 2 | ||||
-rw-r--r-- | googlemock/test/gmock-nice-strict_test.cc | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/googlemock/src/gmock-spec-builders.cc b/googlemock/src/gmock-spec-builders.cc index 2fa1ee4b..f761f97e 100644 --- a/googlemock/src/gmock-spec-builders.cc +++ b/googlemock/src/gmock-spec-builders.cc @@ -364,7 +364,7 @@ UntypedFunctionMockerBase::UntypedInvokeWith(const void* const untyped_args) if (!need_to_report_uninteresting_call) { // Perform the action without printing the call information. - return this->UntypedPerformDefaultAction(untyped_args, ""); + return this->UntypedPerformDefaultAction(untyped_args, "Function call: " + std::string(Name())); } // Warns about the uninteresting call. diff --git a/googlemock/test/gmock-nice-strict_test.cc b/googlemock/test/gmock-nice-strict_test.cc index 5d6ccc4f..0eac6439 100644 --- a/googlemock/test/gmock-nice-strict_test.cc +++ b/googlemock/test/gmock-nice-strict_test.cc @@ -62,6 +62,12 @@ using testing::internal::CaptureStdout; using testing::internal::GetCapturedStdout; #endif +// Class without default constructor. +class NotDefaultConstructible { + public: + explicit NotDefaultConstructible(int) {} +}; + // Defines some mock classes needed by the tests. class Foo { @@ -79,6 +85,7 @@ class MockFoo : public Foo { MOCK_METHOD0(DoThis, void()); MOCK_METHOD1(DoThat, int(bool flag)); + MOCK_METHOD0(ReturnNonDefaultConstructible, NotDefaultConstructible()); private: GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo); @@ -207,6 +214,22 @@ TEST(NiceMockTest, AllowsExpectedCall) { nice_foo.DoThis(); } +// Tests that an unexpected call on a nice mock which returns a not-default-constructible +// type throws an exception and the exception contains the method's name. +TEST(NiceMockTest, ThrowsExceptionForUnknownReturnTypes) { + NiceMock<MockFoo> nice_foo; +#if GTEST_HAS_EXCEPTIONS + try { + nice_foo.ReturnNonDefaultConstructible(); + FAIL(); + } catch (const std::runtime_error& ex) { + EXPECT_THAT(ex.what(), HasSubstr("ReturnNonDefaultConstructible")); + } +#else + EXPECT_DEATH_IF_SUPPORTED({ nice_foo.ReturnNonDefaultConstructible(); }, ""); +#endif +} + // Tests that an unexpected call on a nice mock fails. TEST(NiceMockTest, UnexpectedCallFails) { NiceMock<MockFoo> nice_foo; |