summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorcarlosk <carlosk@chromium.org>2015-08-26 07:12:15 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-26 14:12:58 +0000
commitdd40a439015f8824c0ffa988a5ae794f3138e744 (patch)
tree6c5af991ba0a14dd0d17d6a1141f71781e4d3414 /base
parentceef7c81109eb217eb1e579a0798cd22b3ab59f8 (diff)
downloadchromium_src-dd40a439015f8824c0ffa988a5ae794f3138e744.zip
chromium_src-dd40a439015f8824c0ffa988a5ae794f3138e744.tar.gz
chromium_src-dd40a439015f8824c0ffa988a5ae794f3138e744.tar.bz2
Add test launcher switch to avoid early termination due to broken tests.
Due to big changes to Chromium done in the context of the PlzNavigate project, many tests are broken when we enable it. But getting a precise number of broken tests is difficult because the test launcher will early terminate due to too many broken tests. Hence my adding this option, disabled by default, of forcing the test launcher to finish running even if many tests fail. BUG=504347 Review URL: https://codereview.chromium.org/1307563002 Cr-Commit-Position: refs/heads/master@{#345605}
Diffstat (limited to 'base')
-rw-r--r--base/test/launcher/test_launcher.cc6
-rw-r--r--base/test/launcher/test_launcher.h3
-rw-r--r--base/test/test_switches.cc4
-rw-r--r--base/test/test_switches.h1
4 files changed, 13 insertions, 1 deletions
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc
index 4cf2d1d..8e7b7dbe 100644
--- a/base/test/launcher/test_launcher.cc
+++ b/base/test/launcher/test_launcher.cc
@@ -456,6 +456,7 @@ TestLauncher::TestLauncher(TestLauncherDelegate* launcher_delegate,
test_broken_count_(0),
retry_count_(0),
retry_limit_(0),
+ force_run_broken_tests_(false),
run_result_(true),
watchdog_timer_(FROM_HERE,
TimeDelta::FromSeconds(kOutputTimeoutSeconds),
@@ -619,7 +620,7 @@ void TestLauncher::OnTestFinished(const TestResult& result) {
}
size_t broken_threshold =
std::max(static_cast<size_t>(20), test_started_count_ / 10);
- if (test_broken_count_ >= broken_threshold) {
+ if (!force_run_broken_tests_ && test_broken_count_ >= broken_threshold) {
fprintf(stdout, "Too many badly broken tests (%" PRIuS "), exiting now.\n",
test_broken_count_);
fflush(stdout);
@@ -755,6 +756,9 @@ bool TestLauncher::Init() {
retry_limit_ = 3;
}
+ if (command_line->HasSwitch(switches::kTestLauncherForceRunBrokenTests))
+ force_run_broken_tests_ = true;
+
if (command_line->HasSwitch(switches::kTestLauncherJobs)) {
int jobs = -1;
if (!StringToInt(command_line->GetSwitchValueASCII(
diff --git a/base/test/launcher/test_launcher.h b/base/test/launcher/test_launcher.h
index bd86da5..1fd213e 100644
--- a/base/test/launcher/test_launcher.h
+++ b/base/test/launcher/test_launcher.h
@@ -181,6 +181,9 @@ class TestLauncher {
// Maximum number of retries per iteration.
size_t retry_limit_;
+ // If true will not early exit even if too many tests are broken.
+ bool force_run_broken_tests_;
+
// Tests to retry in this iteration.
std::set<std::string> tests_to_retry_;
diff --git a/base/test/test_switches.cc b/base/test/test_switches.cc
index 84aa53c..4039158 100644
--- a/base/test/test_switches.cc
+++ b/base/test/test_switches.cc
@@ -18,6 +18,10 @@ const char switches::kTestLauncherBotMode[] =
const char switches::kTestLauncherDebugLauncher[] =
"test-launcher-debug-launcher";
+// Force running all requested tests even when too many errors occur.
+const char switches::kTestLauncherForceRunBrokenTests[] =
+ "test-launcher-force-run-broken-tests";
+
// Path to file containing test filter (one pattern per line).
const char switches::kTestLauncherFilterFile[] = "test-launcher-filter-file";
diff --git a/base/test/test_switches.h b/base/test/test_switches.h
index f145f1e..419b755 100644
--- a/base/test/test_switches.h
+++ b/base/test/test_switches.h
@@ -12,6 +12,7 @@ namespace switches {
extern const char kTestLauncherBatchLimit[];
extern const char kTestLauncherBotMode[];
extern const char kTestLauncherDebugLauncher[];
+extern const char kTestLauncherForceRunBrokenTests[];
extern const char kTestLauncherFilterFile[];
extern const char kTestLauncherJobs[];
extern const char kTestLauncherListTests[];