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:
		
						commit
						63fecf15ab
					
				@ -364,7 +364,7 @@ UntypedFunctionMockerBase::UntypedInvokeWith(const void* const untyped_args)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (!need_to_report_uninteresting_call) {
 | 
					    if (!need_to_report_uninteresting_call) {
 | 
				
			||||||
      // Perform the action without printing the call information.
 | 
					      // 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.
 | 
					    // Warns about the uninteresting call.
 | 
				
			||||||
 | 
				
			|||||||
@ -62,6 +62,12 @@ using testing::internal::CaptureStdout;
 | 
				
			|||||||
using testing::internal::GetCapturedStdout;
 | 
					using testing::internal::GetCapturedStdout;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Class without default constructor.
 | 
				
			||||||
 | 
					class NotDefaultConstructible {
 | 
				
			||||||
 | 
					 public:
 | 
				
			||||||
 | 
					  explicit NotDefaultConstructible(int) {}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Defines some mock classes needed by the tests.
 | 
					// Defines some mock classes needed by the tests.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Foo {
 | 
					class Foo {
 | 
				
			||||||
@ -79,6 +85,7 @@ class MockFoo : public Foo {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  MOCK_METHOD0(DoThis, void());
 | 
					  MOCK_METHOD0(DoThis, void());
 | 
				
			||||||
  MOCK_METHOD1(DoThat, int(bool flag));
 | 
					  MOCK_METHOD1(DoThat, int(bool flag));
 | 
				
			||||||
 | 
					  MOCK_METHOD0(ReturnNonDefaultConstructible, NotDefaultConstructible());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 private:
 | 
					 private:
 | 
				
			||||||
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
 | 
					  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
 | 
				
			||||||
@ -207,6 +214,22 @@ TEST(NiceMockTest, AllowsExpectedCall) {
 | 
				
			|||||||
  nice_foo.DoThis();
 | 
					  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.
 | 
					// Tests that an unexpected call on a nice mock fails.
 | 
				
			||||||
TEST(NiceMockTest, UnexpectedCallFails) {
 | 
					TEST(NiceMockTest, UnexpectedCallFails) {
 | 
				
			||||||
  NiceMock<MockFoo> nice_foo;
 | 
					  NiceMock<MockFoo> nice_foo;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user