From 7f437a6e06d2ec3abd3e2fd1101ab6aab386bc44 Mon Sep 17 00:00:00 2001 From: Stanislav Angelovic Date: Thu, 27 Jan 2022 13:38:19 +0100 Subject: [PATCH] fix(tests): printer for std::chrono in googletest v1.11.0 --- tests/CMakeLists.txt | 2 +- tests/integrationtests/Defs.h | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index fbf198c..ec42e55 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -19,7 +19,7 @@ if (NOT TARGET GTest::gmock) if (NOT TARGET GTest::gmock) include(FetchContent) - message("Fetching googletest...") + message("Fetching googletest v${GOOGLETEST_VERSION}...") FetchContent_Declare(googletest GIT_REPOSITORY ${GOOGLETEST_GIT_REPO} GIT_TAG release-${GOOGLETEST_VERSION} diff --git a/tests/integrationtests/Defs.h b/tests/integrationtests/Defs.h index 2f129a4..2bfc7c9 100644 --- a/tests/integrationtests/Defs.h +++ b/tests/integrationtests/Defs.h @@ -56,20 +56,18 @@ const bool DEFAULT_BLOCKING_VALUE{true}; constexpr const double DOUBLE_VALUE{3.24L}; -/** Duration stream operator for human readable gtest value output. - * - * Note that the conversion to double is lossy if the input type has 64 or more bits. - * This is ok for our integration tests because they don't have very - * accurate timing requirements. - * - * @return human readable duration in seconds - */ +}} + +namespace testing::internal { + +// Printer for std::chrono::duration types. +// This is a workaround, since it's not a good thing to add this to std namespace. template< class Rep, class Period > -static std::ostream& operator<<(std::ostream& os, const std::chrono::duration& d) -{ +void PrintTo(const ::std::chrono::duration& d, ::std::ostream* os) { auto seconds = std::chrono::duration_cast>(d); - return os << seconds.count() << " s"; + *os << seconds.count() << "s"; +} + } -}} #endif /* SDBUS_CPP_INTEGRATIONTESTS_DEFS_H_ */