Googletest export
Fixing exception-safety bug in googletest. Previously, if an exception was thrown during a call to a mock that would have triggered an error, the error was discarded. Fixes #2890 PiperOrigin-RevId: 325017806
This commit is contained in:
@@ -38,7 +38,9 @@
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest-spi.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
namespace testing {
|
||||
@@ -604,6 +606,33 @@ TEST(ThrowActionTest, ThrowsGivenExceptionInNullaryFunction) {
|
||||
EXPECT_THROW(a.Perform(std::make_tuple()), MyException);
|
||||
}
|
||||
|
||||
class Object {
|
||||
public:
|
||||
virtual ~Object() {}
|
||||
virtual void Func() {}
|
||||
};
|
||||
|
||||
class MockObject : public Object {
|
||||
public:
|
||||
~MockObject() override {}
|
||||
MOCK_METHOD(void, Func, (), (override));
|
||||
};
|
||||
|
||||
TEST(ThrowActionTest, Times0) {
|
||||
EXPECT_NONFATAL_FAILURE(
|
||||
[] {
|
||||
try {
|
||||
MockObject m;
|
||||
ON_CALL(m, Func()).WillByDefault([] { throw "something"; });
|
||||
EXPECT_CALL(m, Func()).Times(0);
|
||||
m.Func();
|
||||
} catch (...) {
|
||||
// Exception is caught but Times(0) still triggers a failure.
|
||||
}
|
||||
}(),
|
||||
"");
|
||||
}
|
||||
|
||||
#endif // GTEST_HAS_EXCEPTIONS
|
||||
|
||||
// Tests that SetArrayArgument<N>(first, last) sets the elements of the array
|
||||
|
||||
Reference in New Issue
Block a user