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

Unified Diff: chrome/test/browser/browser_test_runner.cc

Issue 197045: Implement a way to run each interactive UI test isolated (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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 | « chrome/test/browser/browser_test_runner.h ('k') | chrome/test/browser/run_all_unittests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/browser/browser_test_runner.cc
===================================================================
--- chrome/test/browser/browser_test_runner.cc (revision 25792)
+++ chrome/test/browser/browser_test_runner.cc (working copy)
@@ -1,133 +0,0 @@
-// Copyright (c) 2009 The Chromium 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 "chrome/test/browser/browser_test_runner.h"
-
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/process_util.h"
-#include "base/scoped_ptr.h"
-#include "base/string_util.h"
-
-namespace {
-
-const wchar_t* const kGTestListTestsFlag = L"gtest_list_tests";
-const wchar_t* const kGTestRunDisabledTestsFlag =
- L"gtest_also_run_disabled_tests";
-
-// Retrieves the list of tests to run by running gtest with the
-// --gtest_list_tests flag in a forked process and parsing its output.
-// |command_line| should contain the command line used to start the browser
-// test launcher, it is expected that it does not contain the
-// --gtest_list_tests flag already.
-// Note: we cannot implement this in-process for InProcessBrowserTestRunner as
-// GTest prints to the stdout and there are no good way of temporarily
-// redirecting outputs.
-bool GetTestList(const CommandLine& command_line,
- std::vector<std::string>* test_list) {
- DCHECK(!command_line.HasSwitch(kGTestListTestsFlag));
-
- // Run ourselves with the --gtest_list_tests option and read the output.
- CommandLine new_command_line(command_line);
- new_command_line.AppendSwitch(kGTestListTestsFlag);
- std::string output;
- if (!base::GetAppOutput(new_command_line, &output))
- return false;
-
- // The output looks like:
- // TestCase.
- // Test1
- // Test2
- // OtherTestCase.
- // FooTest
- // ...
- std::vector<std::string> lines;
- SplitString(output, '\n', &lines);
-
- std::string test_case;
- for (std::vector<std::string>::const_iterator iter = lines.begin();
- iter != lines.end(); ++iter) {
- std::string line = *iter;
- if (line.empty())
- continue; // Just ignore empty lines if any.
-
- if (line[line.size() - 1] == '.') {
- // This is a new test case.
- test_case = line;
- continue;
- }
-
- if (!command_line.HasSwitch(kGTestRunDisabledTestsFlag) &&
- line.find("DISABLED") != std::string::npos)
- continue; // Skip disabled tests.
-
- // We are dealing with a test.
- test_list->push_back(test_case + line);
- }
- return true;
-}
-
-} // namespace
-
-namespace browser_tests {
-
-BrowserTestRunner::BrowserTestRunner() {
-}
-
-BrowserTestRunner::~BrowserTestRunner() {
-}
-
-bool RunTests(const BrowserTestRunnerFactory& browser_test_runner_factory) {
- const CommandLine* command_line = CommandLine::ForCurrentProcess();
-
- DCHECK(!command_line->HasSwitch(kGTestListTestsFlag));
-
- // First let's get the list of tests we need to run.
- std::vector<std::string> test_list;
- if (!GetTestList(*command_line, &test_list)) {
- printf("Failed to retrieve the tests to run.\n");
- return false;
- }
-
- if (test_list.empty()) {
- printf("No tests to run.\n");
- return false;
- }
-
- int test_run_count = 0;
- std::vector<std::string> failed_tests;
- for (std::vector<std::string>::const_iterator iter = test_list.begin();
- iter != test_list.end(); ++iter) {
- std::string test_name = *iter;
- scoped_ptr<BrowserTestRunner> test_runner(
- browser_test_runner_factory.CreateBrowserTestRunner());
- if (!test_runner.get() || !test_runner->Init())
- return false;
- test_run_count++;
- if (!test_runner->RunTest(test_name.c_str())) {
- if (std::find(failed_tests.begin(), failed_tests.end(), test_name) ==
- failed_tests.end()) {
- failed_tests.push_back(*iter);
- }
- }
- }
-
- printf("%d test%s run\n", test_run_count, test_run_count > 1 ? "s" : "");
- printf("%d test%s failed\n", static_cast<int>(failed_tests.size()),
- failed_tests.size() > 1 ? "s" : "");
- if (failed_tests.empty())
- return true;
-
- printf("Failing tests:\n");
- for (std::vector<std::string>::const_iterator iter = failed_tests.begin();
- iter != failed_tests.end(); ++iter) {
- printf("%s\n", iter->c_str());
- }
-
- return false;
-}
-
-} // namespace
« no previous file with comments | « chrome/test/browser/browser_test_runner.h ('k') | chrome/test/browser/run_all_unittests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698