blob: f061c61610eb80ba04605bc35bb1830fa3f47ef9 [file] [log] [blame]
#ifndef AOS_UTIL_DEATH_TEST_LOG_IMPLEMENTATION_H_
#define AOS_UTIL_DEATH_TEST_LOG_IMPLEMENTATION_H_
#include <stdlib.h>
#include "aos/logging/implementations.h"
namespace aos {
namespace util {
// Prints all FATAL messages to stderr and then abort(3)s before the regular
// stuff can print out anything else. Ignores all other messages.
// This is useful in death tests that expect a LOG(FATAL) to cause the death.
class DeathTestLogImplementation : public logging::HandleMessageLogImplementation {
public:
virtual void HandleMessage(const logging::LogMessage &message) override {
if (message.level == FATAL) {
logging::internal::PrintMessage(stderr, message);
abort();
}
}
};
} // namespace util
} // namespace aos
#endif // AOS_UTIL_DEATH_TEST_LOG_IMPLEMENTATION_H_