Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dee214ba authored by Andreas Gampe's avatar Andreas Gampe Committed by android-build-merger
Browse files

Merge "Base: Check severity in destructor" am: 19a76964

am: 1f03df81

Change-Id: Ib81ada30737497c41ba20d81b7e52fdf736e1a14
parents 9f106bec 1f03df81
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -390,6 +390,11 @@ LogMessage::LogMessage(const char* file, unsigned int line, LogId id,
}

LogMessage::~LogMessage() {
  // Check severity again. This is duplicate work wrt/ LOG macros, but not LOG_STREAM.
  if (!WOULD_LOG_SEVERITY(data_->GetSeverity())) {
    return;
  }

  // Finish constructing the message.
  if (data_->GetError() != -1) {
    data_->GetBuffer() << ": " << strerror(data_->GetError());
+90 −28
Original line number Diff line number Diff line
@@ -317,69 +317,131 @@ static void CheckMessage(const CapturedStderr& cap,
#endif
}

#define CHECK_LOG_STREAM(severity) \
#define CHECK_LOG_STREAM_DISABLED(severity) \
  android::base::ScopedLogSeverity sls1(android::base::FATAL); \
  CapturedStderr cap1; \
  LOG_STREAM(severity) << "foo bar"; \
  ASSERT_EQ(0, lseek(cap1.fd(), 0, SEEK_CUR));

#define CHECK_LOG_STREAM_ENABLED(severity) \
  android::base::ScopedLogSeverity sls2(android::base::severity); \
  CapturedStderr cap2; \
  LOG_STREAM(severity) << "foobar"; \
  CheckMessage(cap2, android::base::severity, "foobar"); \

TEST(logging, LOG_STREAM_FATAL_WITHOUT_ABORT) {
  CHECK_LOG_STREAM(FATAL_WITHOUT_ABORT);
TEST(logging, LOG_STREAM_FATAL_WITHOUT_ABORT_disabled) {
  CHECK_LOG_STREAM_DISABLED(FATAL_WITHOUT_ABORT);
}

TEST(logging, LOG_STREAM_FATAL_WITHOUT_ABORT_enabled) {
  CHECK_LOG_STREAM_ENABLED(FATAL_WITHOUT_ABORT);
}

TEST(logging, LOG_STREAM_ERROR_disabled) {
  CHECK_LOG_STREAM_DISABLED(ERROR);
}

TEST(logging, LOG_STREAM_ERROR_enabled) {
  CHECK_LOG_STREAM_ENABLED(ERROR);
}

TEST(logging, LOG_STREAM_WARNING_disabled) {
  CHECK_LOG_STREAM_DISABLED(WARNING);
}

TEST(logging, LOG_STREAM_WARNING_enabled) {
  CHECK_LOG_STREAM_ENABLED(WARNING);
}

TEST(logging, LOG_STREAM_INFO_disabled) {
  CHECK_LOG_STREAM_DISABLED(INFO);
}

TEST(logging, LOG_STREAM_ERROR) {
  CHECK_LOG_STREAM(ERROR);
TEST(logging, LOG_STREAM_INFO_enabled) {
  CHECK_LOG_STREAM_ENABLED(INFO);
}

TEST(logging, LOG_STREAM_WARNING) {
  CHECK_LOG_STREAM(WARNING);
TEST(logging, LOG_STREAM_DEBUG_disabled) {
  CHECK_LOG_STREAM_DISABLED(DEBUG);
}

TEST(logging, LOG_STREAM_INFO) {
  CHECK_LOG_STREAM(INFO);
TEST(logging, LOG_STREAM_DEBUG_enabled) {
  CHECK_LOG_STREAM_ENABLED(DEBUG);
}

TEST(logging, LOG_STREAM_DEBUG) {
  CHECK_LOG_STREAM(DEBUG);
TEST(logging, LOG_STREAM_VERBOSE_disabled) {
  CHECK_LOG_STREAM_DISABLED(VERBOSE);
}

TEST(logging, LOG_STREAM_VERBOSE) {
  CHECK_LOG_STREAM(VERBOSE);
TEST(logging, LOG_STREAM_VERBOSE_enabled) {
  CHECK_LOG_STREAM_ENABLED(VERBOSE);
}

#undef CHECK_LOG_STREAM
#undef CHECK_LOG_STREAM_DISABLED
#undef CHECK_LOG_STREAM_ENABLED

#define CHECK_LOG_STREAM_S(severity) \
#define CHECK_LOG_STREAM_S_DISABLED(severity) \
  android::base::ScopedLogSeverity sls1(android::base::FATAL); \
  CapturedStderr cap1; \
  LOG_STREAM_S(android::base::severity) << "foobar"; \
  ASSERT_EQ(0, lseek(cap1.fd(), 0, SEEK_CUR));

#define CHECK_LOG_STREAM_S_ENABLED(severity) \
  android::base::ScopedLogSeverity sls2(android::base::severity); \
  CapturedStderr cap2; \
  LOG_STREAM_S(android::base::severity) << "foobar"; \
  CheckMessage(cap2, android::base::severity, "foobar"); \

TEST(logging, LOG_STREAM_S_FATAL_WITHOUT_ABORT) {
  CHECK_LOG_STREAM_S(FATAL_WITHOUT_ABORT);
TEST(logging, LOG_STREAM_S_FATAL_WITHOUT_ABORT_disabled) {
  CHECK_LOG_STREAM_S_DISABLED(FATAL_WITHOUT_ABORT);
}

TEST(logging, LOG_STREAM_S_FATAL_WITHOUT_ABORT_enabled) {
  CHECK_LOG_STREAM_S_ENABLED(FATAL_WITHOUT_ABORT);
}

TEST(logging, LOG_STREAM_S_ERROR_disabled) {
  CHECK_LOG_STREAM_S_DISABLED(ERROR);
}

TEST(logging, LOG_STREAM_S_ERROR_enabled) {
  CHECK_LOG_STREAM_S_ENABLED(ERROR);
}

TEST(logging, LOG_STREAM_S_WARNING_disabled) {
  CHECK_LOG_STREAM_S_DISABLED(WARNING);
}

TEST(logging, LOG_STREAM_S_WARNING_enabled) {
  CHECK_LOG_STREAM_S_ENABLED(WARNING);
}

TEST(logging, LOG_STREAM_S_INFO_disabled) {
  CHECK_LOG_STREAM_S_DISABLED(INFO);
}

TEST(logging, LOG_STREAM_S_ERROR) {
  CHECK_LOG_STREAM_S(ERROR);
TEST(logging, LOG_STREAM_S_INFO_enabled) {
  CHECK_LOG_STREAM_S_ENABLED(INFO);
}

TEST(logging, LOG_STREAM_S_WARNING) {
  CHECK_LOG_STREAM_S(WARNING);
TEST(logging, LOG_STREAM_S_DEBUG_disabled) {
  CHECK_LOG_STREAM_S_DISABLED(DEBUG);
}

TEST(logging, LOG_STREAM_S_INFO) {
  CHECK_LOG_STREAM_S(INFO);
TEST(logging, LOG_STREAM_S_DEBUG_enabled) {
  CHECK_LOG_STREAM_S_ENABLED(DEBUG);
}

TEST(logging, LOG_STREAM_S_DEBUG) {
  CHECK_LOG_STREAM_S(DEBUG);
TEST(logging, LOG_STREAM_S_VERBOSE_disabled) {
  CHECK_LOG_STREAM_S_DISABLED(VERBOSE);
}

TEST(logging, LOG_STREAM_S_VERBOSE) {
  CHECK_LOG_STREAM_S(VERBOSE);
TEST(logging, LOG_STREAM_S_VERBOSE_enabled) {
  CHECK_LOG_STREAM_S_ENABLED(VERBOSE);
}

#undef CHECK_LOG_STREAM_S
#undef CHECK_LOG_STREAM_S_DISABLED
#undef CHECK_LOG_STREAM_S_ENABLED


#define CHECK_LOG_DISABLED(severity) \