Index: content/shell/browser/layout_test/layout_test_browser_main.cc |
diff --git a/content/shell/browser/layout_test/layout_test_browser_main.cc b/content/shell/browser/layout_test/layout_test_browser_main.cc |
index ec347517324c260f1d80ed684a99959437e615dc..d1cefcfbe8ba5b96d465b97c6d58fd04f94335c4 100644 |
--- a/content/shell/browser/layout_test/layout_test_browser_main.cc |
+++ b/content/shell/browser/layout_test/layout_test_browser_main.cc |
@@ -18,6 +18,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/thread_task_runner_handle.h" |
#include "base/threading/thread_restrictions.h" |
+#include "components/test_runner/test_info_extractor.h" |
#include "content/public/browser/browser_main_runner.h" |
#include "content/public/common/url_constants.h" |
#include "content/shell/browser/blink_test_controller.h" |
@@ -33,97 +34,12 @@ |
namespace { |
-GURL GetURLForLayoutTest(const std::string& test_name, |
- base::FilePath* current_working_directory, |
- bool* enable_pixel_dumping, |
- std::string* expected_pixel_hash) { |
- // A test name is formated like file:///path/to/test'--pixel-test'pixelhash |
- std::string path_or_url = test_name; |
- std::string pixel_switch; |
- std::string pixel_hash; |
- std::string::size_type separator_position = path_or_url.find('\''); |
- if (separator_position != std::string::npos) { |
- pixel_switch = path_or_url.substr(separator_position + 1); |
- path_or_url.erase(separator_position); |
- } |
- separator_position = pixel_switch.find('\''); |
- if (separator_position != std::string::npos) { |
- pixel_hash = pixel_switch.substr(separator_position + 1); |
- pixel_switch.erase(separator_position); |
- } |
- if (enable_pixel_dumping) { |
- *enable_pixel_dumping = |
- (pixel_switch == "--pixel-test" || pixel_switch == "-p"); |
- } |
- if (expected_pixel_hash) |
- *expected_pixel_hash = pixel_hash; |
- |
- GURL test_url; |
-#if defined(OS_ANDROID) |
- if (content::GetTestUrlForAndroid(path_or_url, &test_url)) |
- return test_url; |
-#endif |
- |
- test_url = GURL(path_or_url); |
- if (!(test_url.is_valid() && test_url.has_scheme())) { |
- // We're outside of the message loop here, and this is a test. |
- base::ThreadRestrictions::ScopedAllowIO allow_io; |
-#if defined(OS_WIN) |
- base::FilePath::StringType wide_path_or_url = |
- base::SysNativeMBToWide(path_or_url); |
- base::FilePath local_file(wide_path_or_url); |
-#else |
- base::FilePath local_file(path_or_url); |
-#endif |
- if (!base::PathExists(local_file)) { |
- local_file = content::GetWebKitRootDirFilePath() |
- .Append(FILE_PATH_LITERAL("LayoutTests")) |
- .Append(local_file); |
- } |
- test_url = net::FilePathToFileURL(base::MakeAbsoluteFilePath(local_file)); |
- } |
- base::FilePath local_path; |
- if (current_working_directory) { |
- // We're outside of the message loop here, and this is a test. |
- base::ThreadRestrictions::ScopedAllowIO allow_io; |
- if (net::FileURLToFilePath(test_url, &local_path)) |
- *current_working_directory = local_path.DirName(); |
- else |
- base::GetCurrentDirectory(current_working_directory); |
- } |
- return test_url; |
-} |
- |
-bool GetNextTest(const base::CommandLine::StringVector& args, |
- size_t* position, |
- std::string* test) { |
- if (*position >= args.size()) |
- return false; |
- if (args[*position] == FILE_PATH_LITERAL("-")) |
- return !!std::getline(std::cin, *test, '\n'); |
-#if defined(OS_WIN) |
- *test = base::WideToUTF8(args[(*position)++]); |
-#else |
- *test = args[(*position)++]; |
-#endif |
- return true; |
-} |
- |
-bool RunOneTest(const std::string& test_string, |
+bool RunOneTest(const test_runner::TestInfo& test_info, |
bool* ran_at_least_once, |
const scoped_ptr<content::BrowserMainRunner>& main_runner) { |
- if (test_string.empty()) |
- return true; |
- if (test_string == "QUIT") |
- return false; |
- |
- bool enable_pixel_dumps; |
- std::string pixel_hash; |
- base::FilePath cwd; |
- GURL test_url = |
- GetURLForLayoutTest(test_string, &cwd, &enable_pixel_dumps, &pixel_hash); |
if (!content::BlinkTestController::Get()->PrepareForLayoutTest( |
- test_url, cwd, enable_pixel_dumps, pixel_hash)) { |
+ test_info.url, test_info.current_working_directory, |
+ test_info.enable_pixel_dumping, test_info.expected_pixel_hash)) { |
return false; |
} |
@@ -158,17 +74,16 @@ int RunTests(const scoped_ptr<content::BrowserMainRunner>& main_runner) { |
base::GetTempDir(&temp_path); |
test_controller.SetTempPath(temp_path); |
} |
- std::string test_string; |
- base::CommandLine::StringVector args = |
- base::CommandLine::ForCurrentProcess()->GetArgs(); |
- size_t command_line_position = 0; |
- bool ran_at_least_once = false; |
std::cout << "#READY\n"; |
std::cout.flush(); |
- while (GetNextTest(args, &command_line_position, &test_string)) { |
- if (!RunOneTest(test_string, &ran_at_least_once, main_runner)) |
+ base::CommandLine::StringVector args = |
+ base::CommandLine::ForCurrentProcess()->GetArgs(); |
+ test_runner::TestInfoExtractor test_extractor(args); |
+ bool ran_at_least_once = false; |
+ while (auto test_info = test_extractor.GetNextTest()) { |
Ryan Sleevi
2015/09/10 17:48:04
More auto danger here
sadrul
2015/09/10 18:09:09
Done.
|
+ if (!RunOneTest(*test_info, &ran_at_least_once, main_runner)) |
break; |
} |
if (!ran_at_least_once) { |