| Index: base/test/test_suite.cc
|
| diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc
|
| index 6f4cc372cb86ad73f9388740e5a9f0c05652cc88..c9bfe9e0f0173558f90130aead0fabe5b8370864 100644
|
| --- a/base/test/test_suite.cc
|
| +++ b/base/test/test_suite.cc
|
| @@ -238,11 +238,11 @@ void TestSuite::AddTestLauncherResultPrinter() {
|
| return;
|
| }
|
|
|
| - XmlUnitTestResultPrinter* printer = new XmlUnitTestResultPrinter;
|
| - CHECK(printer->Initialize(output_path));
|
| + printer_ = new XmlUnitTestResultPrinter;
|
| + CHECK(printer_->Initialize(output_path));
|
| testing::TestEventListeners& listeners =
|
| testing::UnitTest::GetInstance()->listeners();
|
| - listeners.Append(printer);
|
| + listeners.Append(printer_);
|
| }
|
|
|
| // Don't add additional code to this method. Instead add it to
|
| @@ -282,8 +282,10 @@ int TestSuite::Run() {
|
| return result;
|
| }
|
|
|
| -// static
|
| -void TestSuite::UnitTestAssertHandler(const std::string& str) {
|
| +void TestSuite::UnitTestAssertHandler(const char* file,
|
| + int line,
|
| + const base::StringPiece summary,
|
| + const base::StringPiece stack_trace) {
|
| #if defined(OS_ANDROID)
|
| // Correlating test stdio with logcat can be difficult, so we emit this
|
| // helpful little hint about what was running. Only do this for Android
|
| @@ -298,6 +300,16 @@ void TestSuite::UnitTestAssertHandler(const std::string& str) {
|
| }
|
| #endif // defined(OS_ANDROID)
|
|
|
| + // XmlUnitTestResultPrinter inherits gtest format, where assert has summary
|
| + // and message. In GTest, summary is just a logged text, and message is a
|
| + // logged text, concatenated with stack trace of assert.
|
| + // Concatenate summary and stack_trace here, to pass it as a message.
|
| + if (printer_) {
|
| + const std::string summary_str = summary.as_string();
|
| + const std::string stack_trace_str = summary_str + stack_trace.as_string();
|
| + printer_->OnAssert(file, line, summary_str, stack_trace_str);
|
| + }
|
| +
|
| // The logging system actually prints the message before calling the assert
|
| // handler. Just exit now to avoid printing too many stack traces.
|
| _exit(1);
|
| @@ -359,7 +371,8 @@ void TestSuite::Initialize() {
|
| !CommandLine::ForCurrentProcess()->HasSwitch("show-error-dialogs")) {
|
| SuppressErrorDialogs();
|
| debug::SetSuppressDebugUI(true);
|
| - logging::SetLogAssertHandler(UnitTestAssertHandler);
|
| + assert_handler_ = base::MakeUnique<logging::ScopedLogAssertHandler>(
|
| + base::Bind(&TestSuite::UnitTestAssertHandler, base::Unretained(this)));
|
| }
|
|
|
| base::test::InitializeICUForTesting();
|
|
|