// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <base/logging.h>
#include <chromeos/syslog_logging.h>
#include <gtest/gtest.h>

namespace chromeos {

class SyslogLoggingDeathTest : public ::testing::Test {
 public:
  SyslogLoggingDeathTest() {}
  virtual ~SyslogLoggingDeathTest() {}

 private:
  DISALLOW_COPY_AND_ASSIGN(SyslogLoggingDeathTest);
};

TEST_F(SyslogLoggingDeathTest, FatalLoggingIsFatal) {
  int old_flags = GetLogFlags();
  SetLogFlags(kLogToStderr);
  EXPECT_DEATH({ LOG(FATAL) << "First Fatality!"; }, "First Fatality!");
  // No flags == don't log to syslog, stderr, or accumulated string.
  SetLogFlags(0);
  // Still a fatal log message
  EXPECT_DEATH({ LOG(FATAL) << "Second Fatality!"; }, "Second Fatality!");
  SetLogFlags(old_flags);
}

}  // namespace chromeos
