aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/gmock/gmock-printers.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/include/gmock/gmock-printers.h b/include/gmock/gmock-printers.h
index 561de3d9..69eee120 100644
--- a/include/gmock/gmock-printers.h
+++ b/include/gmock/gmock-printers.h
@@ -129,14 +129,21 @@ class TypeWithoutFormatter {
sizeof(value), os);
}
};
+
+// We print a protobuf using its ShortDebugString() when the string
+// doesn't exceed this many characters; otherwise we print it using
+// DebugString() for better readability.
+const size_t kProtobufOneLinerMaxLength = 50;
+
template <typename T>
class TypeWithoutFormatter<T, true> {
public:
static void PrintValue(const T& value, ::std::ostream* os) {
- // Both ProtocolMessage and proto2::Message have the
- // ShortDebugString() method, so the same implementation works for
- // both.
- ::std::operator<<(*os, "<" + value.ShortDebugString() + ">");
+ const ::testing::internal::string short_str = value.ShortDebugString();
+ const ::testing::internal::string pretty_str =
+ short_str.length() <= kProtobufOneLinerMaxLength ?
+ short_str : ("\n" + value.DebugString());
+ ::std::operator<<(*os, "<" + pretty_str + ">");
}
};