Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Unified Diff: base/test/test_suite.cc

Issue 22893056: GTTF: make the new test launcher handle test crashes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ios Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/test/test_suite.h ('k') | base/test/test_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/test/test_suite.cc
diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc
index 27c00c94348236150683724d2924a4a7c6df6dda..0bf2372c54d3855c29f7f7c70e0b31dcb8b5eebe 100644
--- a/base/test/test_suite.cc
+++ b/base/test/test_suite.cc
@@ -11,13 +11,16 @@
#include "base/debug/debug_on_start_win.h"
#include "base/debug/debugger.h"
#include "base/debug/stack_trace.h"
+#include "base/file_util.h"
#include "base/files/file_path.h"
#include "base/i18n/icu_util.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
#include "base/process/memory.h"
+#include "base/test/gtest_xml_util.h"
#include "base/test/multiprocess_test.h"
+#include "base/test/test_switches.h"
#include "base/test/test_timeouts.h"
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -142,6 +145,34 @@ void TestSuite::ResetCommandLine() {
listeners.Append(new TestClientInitializer);
}
+#if !defined(OS_IOS)
+void TestSuite::AddTestLauncherResultPrinter() {
+ // Only add the custom printer if requested.
+ if (!CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kTestLauncherOutput)) {
+ return;
+ }
+
+ FilePath output_path(CommandLine::ForCurrentProcess()->GetSwitchValuePath(
+ switches::kTestLauncherOutput));
+
+ // Do not add the result printer if output path already exists. It's an
+ // indicator there is a process printing to that file, and we're likely
+ // its child. Do not clobber the results in that case.
+ if (PathExists(output_path)) {
+ LOG(WARNING) << "Test launcher output path " << output_path.AsUTF8Unsafe()
+ << " exists. Not adding test launcher result printer.";
+ return;
+ }
+
+ XmlUnitTestResultPrinter* printer = new XmlUnitTestResultPrinter;
+ CHECK(printer->Initialize(output_path));
+ testing::TestEventListeners& listeners =
+ testing::UnitTest::GetInstance()->listeners();
+ listeners.Append(printer);
+}
+#endif // !defined(OS_IOS)
+
// Don't add additional code to this method. Instead add it to
// Initialize(). See bug 6436.
int TestSuite::Run() {
@@ -250,6 +281,9 @@ void TestSuite::Initialize() {
CatchMaybeTests();
ResetCommandLine();
+#if !defined(OS_IOS)
+ AddTestLauncherResultPrinter();
+#endif // !defined(OS_IOS)
TestTimeouts::Initialize();
}
« no previous file with comments | « base/test/test_suite.h ('k') | base/test/test_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698