Base: Fix dangling-else in CHECK_STROP
Follow-up to commit 2527628edae5651cb28e72b2c98f24e72dcdb384.
Bug: 26962895
Bug: 31338270
Test: m
Test: mmma system/core/base && $ANDROID_HOST_OUT/nativetest64/libbase_test/libbase_test64
Change-Id: Ifd71314e146ebf3957cc053ee95ef85002c909b4
diff --git a/base/logging_test.cpp b/base/logging_test.cpp
index 02a9198..8813525 100644
--- a/base/logging_test.cpp
+++ b/base/logging_test.cpp
@@ -120,6 +120,28 @@
EXPECT_FALSE(flag) << "CHECK_STREQ probably has a dangling if with no else";
}
+TEST(logging, DCHECK) {
+ if (android::base::kEnableDChecks) {
+ ASSERT_DEATH({SuppressAbortUI(); DCHECK(false);}, "DCheck failed: false ");
+ }
+ DCHECK(true);
+
+ if (android::base::kEnableDChecks) {
+ ASSERT_DEATH({SuppressAbortUI(); DCHECK_EQ(0, 1);}, "DCheck failed: 0 == 1 ");
+ }
+ DCHECK_EQ(0, 0);
+
+ if (android::base::kEnableDChecks) {
+ ASSERT_DEATH({SuppressAbortUI(); DCHECK_STREQ("foo", "bar");},
+ R"(DCheck failed: "foo" == "bar")");
+ }
+ DCHECK_STREQ("foo", "foo");
+
+ // No testing whether we have a dangling else, possibly. That's inherent to the if (constexpr)
+ // setup we intentionally chose to force type-checks of debug code even in release builds (so
+ // we don't get more bit-rot).
+}
+
static std::string make_log_pattern(android::base::LogSeverity severity,
const char* message) {
static const char log_characters[] = "VDIWEFF";