summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@google.com>2023-02-01 17:32:33 (GMT)
committerCopybara-Service <copybara-worker@google.com>2023-02-01 17:33:23 (GMT)
commit0a3b403fe037ff80daa1826ae99eed41e94dea05 (patch)
treebd35348e7404c2eb0b8fb4e5eb927a17db5cbf1b
parentd9251171f5a42eaf993395e7ef127546af5814b0 (diff)
downloadgoogletest-0a3b403fe037ff80daa1826ae99eed41e94dea05.zip
googletest-0a3b403fe037ff80daa1826ae99eed41e94dea05.tar.gz
googletest-0a3b403fe037ff80daa1826ae99eed41e94dea05.tar.bz2
Fix gmock_output_test when using MSVC
std::pair is printed as "struct std::pair<int,bool>" when using MSVC vs "std::pair<int,bool>" with other compilers. Switch to "std::tuple", which is the same for all compilers. See https://learn.microsoft.com/en-us/cpp/standard-library/pair-structure https://learn.microsoft.com/en-us/cpp/standard-library/tuple-class PiperOrigin-RevId: 506340295 Change-Id: Ib4ce2f74d54888a4e4173f42da1b55cc5583f7d4
-rw-r--r--googlemock/test/gmock_output_test_.cc9
-rw-r--r--googlemock/test/gmock_output_test_golden.txt4
2 files changed, 9 insertions, 4 deletions
diff --git a/googlemock/test/gmock_output_test_.cc b/googlemock/test/gmock_output_test_.cc
index af4eaa9..ca5a646 100644
--- a/googlemock/test/gmock_output_test_.cc
+++ b/googlemock/test/gmock_output_test_.cc
@@ -33,6 +33,7 @@
#include <stdio.h>
#include <string>
+#include <tuple>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
@@ -254,12 +255,16 @@ TEST_F(GMockOutputTest, CatchesLeakedMocks) {
}
MATCHER_P2(IsPair, first, second, "") {
- return Value(arg.first, first) && Value(arg.second, second);
+ return Value(std::get<0>(arg), first) && Value(std::get<1>(arg), second);
}
TEST_F(GMockOutputTest, PrintsMatcher) {
const testing::Matcher<int> m1 = Ge(48);
- EXPECT_THAT((std::pair<int, bool>(42, true)), IsPair(m1, true));
+ // Explicitly using std::tuple instead of std::pair due to differences between
+ // MSVC and other compilers. std::pair is printed as
+ // "struct std::pair<int,bool>" when using MSVC vs "std::pair<int,bool>" with
+ // other compilers.
+ EXPECT_THAT((std::tuple<int, bool>(42, true)), IsPair(m1, true));
}
void TestCatchesLeakedMocksInAdHocTests() {
diff --git a/googlemock/test/gmock_output_test_golden.txt b/googlemock/test/gmock_output_test_golden.txt
index 467fa20..ac2a5e2 100644
--- a/googlemock/test/gmock_output_test_golden.txt
+++ b/googlemock/test/gmock_output_test_golden.txt
@@ -290,9 +290,9 @@ Stack trace:
[ OK ] GMockOutputTest.CatchesLeakedMocks
[ RUN ] GMockOutputTest.PrintsMatcher
FILE:#: Failure
-Value of: (std::pair<int, bool>(42, true))
+Value of: (std::tuple<int, bool>(42, true))
Expected: is pair (first: is >= 48, second: true)
- Actual: (42, true) (of type std::pair<int, bool>)
+ Actual: (42, true)
[ FAILED ] GMockOutputTest.PrintsMatcher
[ FAILED ] GMockOutputTest.UnexpectedCall
[ FAILED ] GMockOutputTest.UnexpectedCallToVoidFunction