Fix handling of pointer printing tests in 32-bit builds Fixes #2079 PiperOrigin-RevId: 937602751 Change-Id: I000f5af57d00837b1d08bf41410c0eb3ce1191c5
diff --git a/absl/log/check_test_impl.inc b/absl/log/check_test_impl.inc index 47af1dd..c78bbd4 100644 --- a/absl/log/check_test_impl.inc +++ b/absl/log/check_test_impl.inc
@@ -727,11 +727,9 @@ TEST(CHECKDeathTest, TestPointerPrintedAsNumberDespiteAbslStringify) { const auto* p = reinterpret_cast<const PointerIsStringifiable*>(0x1234); - EXPECT_DEATH( - ABSL_TEST_CHECK_EQ(p, nullptr), - AnyOf( - HasSubstr("Check failed: p == nullptr (0000000000001234 vs. (null))"), - HasSubstr("Check failed: p == nullptr (0x1234 vs. (null))"))); + EXPECT_DEATH(ABSL_TEST_CHECK_EQ(p, nullptr), + ContainsRegex( + "Check failed: p == nullptr \\(0+x?1234 vs. \\(null\\)\\)")); } // An uncopyable object with operator<<.
diff --git a/absl/strings/BUILD.bazel b/absl/strings/BUILD.bazel index 6b96d0c..21479a7 100644 --- a/absl/strings/BUILD.bazel +++ b/absl/strings/BUILD.bazel
@@ -1617,12 +1617,12 @@ linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":generic_printer", + ":str_format", ":strings", "//absl/base:config", "//absl/base:core_headers", "//absl/cleanup", "//absl/container:flat_hash_map", - "//absl/log", "//absl/status", "//absl/status:statusor", "@googletest//:gtest",
diff --git a/absl/strings/CMakeLists.txt b/absl/strings/CMakeLists.txt index ca07c3e..b6f2aa7 100644 --- a/absl/strings/CMakeLists.txt +++ b/absl/strings/CMakeLists.txt
@@ -1319,9 +1319,9 @@ absl::config absl::flat_hash_map absl::generic_printer_internal - absl::log absl::status absl::statusor + absl::str_format absl::strings GTest::gmock_main )
diff --git a/absl/strings/internal/generic_printer_test.cc b/absl/strings/internal/generic_printer_test.cc index 071bf76..be6e003 100644 --- a/absl/strings/internal/generic_printer_test.cc +++ b/absl/strings/internal/generic_printer_test.cc
@@ -15,6 +15,7 @@ #include "absl/strings/internal/generic_printer.h" #include <array> +#include <cinttypes> #include <clocale> #include <cstdint> #include <limits> @@ -38,6 +39,7 @@ #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" +#include "absl/strings/str_format.h" #include "absl/strings/substitute.h" namespace generic_logging_test { @@ -521,23 +523,26 @@ auto cp = std::make_unique<char*>(memory); EXPECT_THAT(GenericPrintToString(i), - AnyOf(Eq(absl::StrFormat("<%016X pointing to 5>", - reinterpret_cast<intptr_t>(&*i))), + AnyOf(Eq(absl::StrFormat("<%0*" PRIXPTR " pointing to 5>", + sizeof(void*) * 2, + reinterpret_cast<uintptr_t>(&*i))), Eq(absl::StrFormat("<%#x pointing to 5>", - reinterpret_cast<intptr_t>(&*i))))); + reinterpret_cast<uintptr_t>(&*i))))); EXPECT_THAT( GenericPrintToString(c), - AnyOf(HasSubstr(absl::StrFormat("<%016X pointing to 'z'", - reinterpret_cast<intptr_t>(&*c))), + AnyOf(HasSubstr(absl::StrFormat("<%0*" PRIXPTR " pointing to 'z'", + sizeof(void*) * 2, + reinterpret_cast<uintptr_t>(&*c))), HasSubstr(absl::StrFormat("<%#x pointing to 'z'", - reinterpret_cast<intptr_t>(&*c))))); + reinterpret_cast<uintptr_t>(&*c))))); EXPECT_THAT(GenericPrintToString(cp), - AnyOf(Eq(absl::StrFormat("<%016X pointing to abcdefg>", - reinterpret_cast<intptr_t>(&*cp))), + AnyOf(Eq(absl::StrFormat("<%0*" PRIXPTR " pointing to abcdefg>", + sizeof(void*) * 2, + reinterpret_cast<uintptr_t>(&*cp))), Eq(absl::StrFormat("<%#x pointing to abcdefg>", - reinterpret_cast<intptr_t>(&*cp))))); + reinterpret_cast<uintptr_t>(&*cp))))); } TEST(GenericPrinterTest, SmartPointerToArrayOnlyPrintsAddressAndHelpText) { @@ -552,18 +557,20 @@ EXPECT_THAT( GenericPrintToString(nonempty), AllOf(AnyOf(HasSubstr(absl::StrFormat( - "%016X", reinterpret_cast<intptr_t>(nonempty.get()))), + "%0*" PRIXPTR, sizeof(void*) * 2, + reinterpret_cast<uintptr_t>(nonempty.get()))), HasSubstr(absl::StrFormat( - "%#x", reinterpret_cast<intptr_t>(nonempty.get())))), + "%#x", reinterpret_cast<uintptr_t>(nonempty.get())))), HasSubstr("array"), Not(HasSubstr("to 54321")), Not(HasSubstr("to 12345")))); EXPECT_THAT( GenericPrintToString(empty), AllOf(AnyOf(HasSubstr(absl::StrFormat( - "%016X", reinterpret_cast<intptr_t>(empty.get()))), + "%0*" PRIXPTR, sizeof(void*) * 2, + reinterpret_cast<uintptr_t>(empty.get()))), HasSubstr(absl::StrFormat( - "%#x", reinterpret_cast<intptr_t>(empty.get())))), + "%#x", reinterpret_cast<uintptr_t>(empty.get())))), HasSubstr("array"))); }