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

Side by Side Diff: content/test/test_launcher.cc

Issue 10825311: Add a MANUAL_ prefix for browser tests. These tests don't run unless --run-manual is specified. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/test/content_browser_test.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/public/test/test_launcher.h" 5 #include "content/public/test/test_launcher.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 23 matching lines...) Expand all
34 #include "sandbox/win/src/dep.h" 34 #include "sandbox/win/src/dep.h"
35 #include "sandbox/win/src/sandbox_factory.h" 35 #include "sandbox/win/src/sandbox_factory.h"
36 #include "sandbox/win/src/sandbox_types.h" 36 #include "sandbox/win/src/sandbox_types.h"
37 #elif defined(OS_MACOSX) 37 #elif defined(OS_MACOSX)
38 #include "base/mac/scoped_nsautorelease_pool.h" 38 #include "base/mac/scoped_nsautorelease_pool.h"
39 #endif 39 #endif
40 40
41 namespace test_launcher { 41 namespace test_launcher {
42 42
43 namespace { 43 namespace {
44
45 // A multiplier for slow tests. We generally avoid multiplying
46 // test timeouts by any constants. Here it is used as last resort
47 // to implement the SLOW_ test prefix.
48 static const int kSlowTestTimeoutMultiplier = 5;
darin (slow to review) 2012/08/11 06:16:59 nit: 'static' is redundant w/ anonymous namespace
jam 2012/08/13 00:45:25 Done.
49
50 // Tests with this prefix have a longer timeout, see above.
51 const char kSlowTestPrefix[] = "SLOW_";
52
53 // Tests with this prefix run before the same test without it, and use the same
54 // profile. i.e. Foo.PRE_Test runs and then Foo.Test. This allows writing tests
55 // that span browser restarts.
56 const char kPreTestPrefix[] = "PRE_";
57
58 // Manual tests only run when --run-manual is specified. This allows writing
59 // tests that don't run automatically but are still in the same test binary.
60 // This is useful so that a team that wants to run a few tests doesn't have to
61 // add a new binary that must be compiled on all builds.
62 const char kManualTestPrefix[] = "MANUAL_";
63
44 TestLauncherDelegate* g_launcher_delegate; 64 TestLauncherDelegate* g_launcher_delegate;
45 } 65 }
46 66
47 // The environment variable name for the total number of test shards. 67 // The environment variable name for the total number of test shards.
48 const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS"; 68 const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
49 // The environment variable name for the test shard index. 69 // The environment variable name for the test shard index.
50 const char kTestShardIndex[] = "GTEST_SHARD_INDEX"; 70 const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
51 71
52 // The default output file for XML output. 72 // The default output file for XML output.
53 const FilePath::CharType kDefaultOutputFile[] = FILE_PATH_LITERAL( 73 const FilePath::CharType kDefaultOutputFile[] = FILE_PATH_LITERAL(
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // Returns if no more pattern can be found. 294 // Returns if no more pattern can be found.
275 if (cur_pattern == NULL) { 295 if (cur_pattern == NULL) {
276 return false; 296 return false;
277 } 297 }
278 298
279 // Skips the pattern separater (the ':' character). 299 // Skips the pattern separater (the ':' character).
280 cur_pattern++; 300 cur_pattern++;
281 } 301 }
282 } 302 }
283 303
284 // A multiplier for slow tests. We generally avoid multiplying
285 // test timeouts by any constants. Here it is used as last resort
286 // to implement the SLOW_ test prefix.
287 static const int kSlowTestTimeoutMultiplier = 5;
288
289 base::TimeDelta GetTestTerminationTimeout(const std::string& test_name, 304 base::TimeDelta GetTestTerminationTimeout(const std::string& test_name,
290 base::TimeDelta default_timeout) { 305 base::TimeDelta default_timeout) {
291 base::TimeDelta timeout = default_timeout; 306 base::TimeDelta timeout = default_timeout;
292 307
293 // Make it possible for selected tests to request a longer timeout. 308 // Make it possible for selected tests to request a longer timeout.
294 // Generally tests should really avoid doing too much, and splitting 309 // Generally tests should really avoid doing too much, and splitting
295 // a test instead of using SLOW prefix is strongly preferred. 310 // a test instead of using SLOW prefix is strongly preferred.
296 if (test_name.find("SLOW_") != std::string::npos) 311 if (test_name.find(kSlowTestPrefix) != std::string::npos)
297 timeout *= kSlowTestTimeoutMultiplier; 312 timeout *= kSlowTestTimeoutMultiplier;
298 313
299 return timeout; 314 return timeout;
300 } 315 }
301 316
302 int RunTestInternal(const testing::TestCase* test_case, 317 int RunTestInternal(const testing::TestCase* test_case,
303 const std::string& test_name, 318 const std::string& test_name,
304 CommandLine* command_line, 319 CommandLine* command_line,
305 base::TimeDelta default_timeout, 320 base::TimeDelta default_timeout,
306 bool* was_timeout) { 321 bool* was_timeout) {
307 if (test_case) { 322 if (test_case) {
308 std::string pre_test_name = test_name; 323 std::string pre_test_name = test_name;
309 ReplaceFirstSubstringAfterOffset(&pre_test_name, 0, ".", ".PRE_"); 324 std::string replace_string = std::string(".") + kPreTestPrefix;
325 ReplaceFirstSubstringAfterOffset(&pre_test_name, 0, ".", replace_string);
310 for (int i = 0; i < test_case->total_test_count(); ++i) { 326 for (int i = 0; i < test_case->total_test_count(); ++i) {
311 const testing::TestInfo* test_info = test_case->GetTestInfo(i); 327 const testing::TestInfo* test_info = test_case->GetTestInfo(i);
312 std::string cur_test_name = test_info->test_case_name(); 328 std::string cur_test_name = test_info->test_case_name();
313 cur_test_name.append("."); 329 cur_test_name.append(".");
314 cur_test_name.append(test_info->name()); 330 cur_test_name.append(test_info->name());
315 if (cur_test_name == pre_test_name) { 331 if (cur_test_name == pre_test_name) {
316 int exit_code = RunTestInternal(test_case, pre_test_name, command_line, 332 int exit_code = RunTestInternal(test_case, pre_test_name, command_line,
317 default_timeout, was_timeout); 333 default_timeout, was_timeout);
318 if (exit_code != 0) 334 if (exit_code != 0)
319 return exit_code; 335 return exit_code;
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 continue; 492 continue;
477 493
478 // Skip disabled tests. 494 // Skip disabled tests.
479 if (test_name.find("DISABLED") != std::string::npos && 495 if (test_name.find("DISABLED") != std::string::npos &&
480 !command_line->HasSwitch(kGTestRunDisabledTestsFlag)) { 496 !command_line->HasSwitch(kGTestRunDisabledTestsFlag)) {
481 printer.OnTestEnd(test_info->name(), test_case->name(), 497 printer.OnTestEnd(test_info->name(), test_case->name(),
482 false, false, false, 0); 498 false, false, false, 0);
483 continue; 499 continue;
484 } 500 }
485 501
486 if (StartsWithASCII(test_info->name(), "PRE_", true)) 502 if (StartsWithASCII(test_info->name(), kPreTestPrefix, true))
487 continue; 503 continue;
488 504
505 if (StartsWithASCII(test_info->name(), kManualTestPrefix, true) &&
506 !command_line->HasSwitch(kRunManualTestsFlag)) {
507 continue;
508 }
509
489 // Skip the test that doesn't match the filter string (if given). 510 // Skip the test that doesn't match the filter string (if given).
490 if ((!positive_filter.empty() && 511 if ((!positive_filter.empty() &&
491 !MatchesFilter(test_name, positive_filter)) || 512 !MatchesFilter(test_name, positive_filter)) ||
492 MatchesFilter(test_name, negative_filter)) { 513 MatchesFilter(test_name, negative_filter)) {
493 printer.OnTestEnd(test_info->name(), test_case->name(), 514 printer.OnTestEnd(test_info->name(), test_case->name(),
494 false, false, false, 0); 515 false, false, false, 0);
495 continue; 516 continue;
496 } 517 }
497 518
498 // Decide if this test should be run. 519 // Decide if this test should be run.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 609
589 const char kGTestFilterFlag[] = "gtest_filter"; 610 const char kGTestFilterFlag[] = "gtest_filter";
590 const char kGTestHelpFlag[] = "gtest_help"; 611 const char kGTestHelpFlag[] = "gtest_help";
591 const char kGTestListTestsFlag[] = "gtest_list_tests"; 612 const char kGTestListTestsFlag[] = "gtest_list_tests";
592 const char kGTestRepeatFlag[] = "gtest_repeat"; 613 const char kGTestRepeatFlag[] = "gtest_repeat";
593 const char kGTestRunDisabledTestsFlag[] = "gtest_also_run_disabled_tests"; 614 const char kGTestRunDisabledTestsFlag[] = "gtest_also_run_disabled_tests";
594 const char kGTestOutputFlag[] = "gtest_output"; 615 const char kGTestOutputFlag[] = "gtest_output";
595 616
596 const char kSingleProcessTestsFlag[] = "single_process"; 617 const char kSingleProcessTestsFlag[] = "single_process";
597 const char kSingleProcessTestsAndChromeFlag[] = "single-process"; 618 const char kSingleProcessTestsAndChromeFlag[] = "single-process";
619
620 // See kManualTestPrefix above.
621 const char kRunManualTestsFlag[] = "run-manual";
622
598 // The following is kept for historical reasons (so people that are used to 623 // The following is kept for historical reasons (so people that are used to
599 // using it don't get surprised). 624 // using it don't get surprised).
600 const char kChildProcessFlag[] = "child"; 625 const char kChildProcessFlag[] = "child";
601 626
602 const char kHelpFlag[] = "help"; 627 const char kHelpFlag[] = "help";
603 628
604 const char kWarmupFlag[] = "warmup"; 629 const char kWarmupFlag[] = "warmup";
605 630
606 TestLauncherDelegate::~TestLauncherDelegate() { 631 TestLauncherDelegate::~TestLauncherDelegate() {
607 } 632 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 cycles--; 728 cycles--;
704 } 729 }
705 return exit_code; 730 return exit_code;
706 } 731 }
707 732
708 TestLauncherDelegate* GetCurrentTestLauncherDelegate() { 733 TestLauncherDelegate* GetCurrentTestLauncherDelegate() {
709 return g_launcher_delegate; 734 return g_launcher_delegate;
710 } 735 }
711 736
712 } // namespace test_launcher 737 } // namespace test_launcher
OLDNEW
« no previous file with comments | « content/test/content_browser_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698