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(); |