Merge pull request #1206 from ShadowIce/methodname-in-exception
Add function name to exception if there's no default action
This commit is contained in:
		@@ -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.
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user