summaryrefslogtreecommitdiffstats
path: root/googlemock/test/gmock-more-actions_test.cc
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2020-08-05 14:42:03 (GMT)
committerDerek Mauro <dmauro@google.com>2020-08-07 17:08:09 (GMT)
commitd0de618a58d5dcf1014123fc5e829a307066bf9a (patch)
tree5e175b6352a96e8ef8ab2eacb919058d79b4f3ca /googlemock/test/gmock-more-actions_test.cc
parent5a5caab358c2c7059adef1acb22f6cab907b888d (diff)
downloadgoogletest-d0de618a58d5dcf1014123fc5e829a307066bf9a.zip
googletest-d0de618a58d5dcf1014123fc5e829a307066bf9a.tar.gz
googletest-d0de618a58d5dcf1014123fc5e829a307066bf9a.tar.bz2
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
Diffstat (limited to 'googlemock/test/gmock-more-actions_test.cc')
-rw-r--r--googlemock/test/gmock-more-actions_test.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/googlemock/test/gmock-more-actions_test.cc b/googlemock/test/gmock-more-actions_test.cc
index 97ec5cf..d6a078b 100644
--- a/googlemock/test/gmock-more-actions_test.cc
+++ b/googlemock/test/gmock-more-actions_test.cc
@@ -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