Fix pretty printing of string literals. char* and const char* previously directed to the template for T*, which printed, for the string "ABC", 0x12345678 -> 65 (ascii for 'A'). Change-Id: Ifc837777567fc8efa4f9dd72611a63dd6a6a6964 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/22700 Commit-Queue: Matt Stark <msta@google.com> Reviewed-by: Takuto Ikuta <tikuta@google.com>
diff --git a/src/util/test/gn_test.cc b/src/util/test/gn_test.cc index 4941506..4da821a 100644 --- a/src/util/test/gn_test.cc +++ b/src/util/test/gn_test.cc
@@ -38,6 +38,12 @@ return value ? "true" : "false"; } +std::string Pretty(const char* value) { + if (value == nullptr) + return "(const char*) NULL"; + return Pretty(std::string(value)); +} + std::string Indent(std::string_view value) { std::stringstream ss; ss << " ";
diff --git a/src/util/test/test.h b/src/util/test/test.h index 4c45db8..6945660 100644 --- a/src/util/test/test.h +++ b/src/util/test/test.h
@@ -93,6 +93,7 @@ std::string DiffStrings(std::string_view expected, std::string_view actual); std::string Pretty(bool value); +std::string Pretty(const char* value); // Explicitly write this for enum, because otherwise it tries to cast enums // to bools.