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

Unified Diff: base/test/launcher/unit_test_launcher.cc

Issue 885443002: Roll Chrome into Mojo. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Rebase to ToT mojo Created 5 years, 11 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/launcher/unit_test_launcher.h ('k') | base/test/mock_time_provider.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/test/launcher/unit_test_launcher.cc
diff --git a/base/test/launcher/unit_test_launcher.cc b/base/test/launcher/unit_test_launcher.cc
index a31b6db715466e7228a8acdd71ed65ff8dabc427..2a4e74877bd3335101be1fc440ee87aa027296b9 100644
--- a/base/test/launcher/unit_test_launcher.cc
+++ b/base/test/launcher/unit_test_launcher.cc
@@ -85,20 +85,44 @@ void PrintUsage() {
fflush(stdout);
}
-// Returns command line for child GTest process based on the command line
-// of current process. |test_names| is a vector of test full names
-// (e.g. "A.B"), |output_file| is path to the GTest XML output file.
-CommandLine GetCommandLineForChildGTestProcess(
- const std::vector<std::string>& test_names,
- const base::FilePath& output_file) {
- CommandLine new_cmd_line(*CommandLine::ForCurrentProcess());
+class DefaultUnitTestPlatformDelegate : public UnitTestPlatformDelegate {
+ public:
+ DefaultUnitTestPlatformDelegate() {
+ }
- new_cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file);
- new_cmd_line.AppendSwitchASCII(kGTestFilterFlag, JoinString(test_names, ":"));
- new_cmd_line.AppendSwitch(kSingleProcessTestsFlag);
+ private:
+ // UnitTestPlatformDelegate:
+ bool GetTests(std::vector<SplitTestName>* output) override {
+ *output = GetCompiledInTests();
+ return true;
+ }
- return new_cmd_line;
-}
+ bool CreateTemporaryFile(base::FilePath* path) override {
+ if (!CreateNewTempDirectory(FilePath::StringType(), path))
+ return false;
+ *path = path->AppendASCII("test_results.xml");
+ return true;
+ }
+
+ CommandLine GetCommandLineForChildGTestProcess(
+ const std::vector<std::string>& test_names,
+ const base::FilePath& output_file) override {
+ CommandLine new_cmd_line(*CommandLine::ForCurrentProcess());
+
+ new_cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file);
+ new_cmd_line.AppendSwitchASCII(kGTestFilterFlag,
+ JoinString(test_names, ":"));
+ new_cmd_line.AppendSwitch(kSingleProcessTestsFlag);
+
+ return new_cmd_line;
+ }
+
+ std::string GetWrapperForChildGTestProcess() override {
+ return std::string();
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(DefaultUnitTestPlatformDelegate);
+};
bool GetSwitchValueAsInt(const std::string& switch_name, int* result) {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switch_name))
@@ -169,7 +193,9 @@ int LaunchUnitTestsInternal(const RunTestSuiteCallback& run_test_suite,
MessageLoopForIO message_loop;
- UnitTestLauncherDelegate delegate(batch_limit, use_job_objects);
+ DefaultUnitTestPlatformDelegate platform_delegate;
+ UnitTestLauncherDelegate delegate(
+ &platform_delegate, batch_limit, use_job_objects);
base::TestLauncher launcher(&delegate, default_jobs);
bool success = launcher.Run();
@@ -221,9 +247,13 @@ int LaunchUnitTests(int argc,
}
#endif // defined(OS_WIN)
-UnitTestLauncherDelegate::UnitTestLauncherDelegate(size_t batch_limit,
- bool use_job_objects)
- : batch_limit_(batch_limit), use_job_objects_(use_job_objects) {
+UnitTestLauncherDelegate::UnitTestLauncherDelegate(
+ UnitTestPlatformDelegate* platform_delegate,
+ size_t batch_limit,
+ bool use_job_objects)
+ : platform_delegate_(platform_delegate),
+ batch_limit_(batch_limit),
+ use_job_objects_(use_job_objects) {
}
UnitTestLauncherDelegate::~UnitTestLauncherDelegate() {
@@ -238,8 +268,7 @@ UnitTestLauncherDelegate::GTestCallbackState::~GTestCallbackState() {
bool UnitTestLauncherDelegate::GetTests(std::vector<SplitTestName>* output) {
DCHECK(thread_checker_.CalledOnValidThread());
- *output = GetCompiledInTests();
- return true;
+ return platform_delegate_->GetTests(output);
}
bool UnitTestLauncherDelegate::ShouldRunTest(const std::string& test_case_name,
@@ -259,7 +288,8 @@ size_t UnitTestLauncherDelegate::RunTests(
for (size_t i = 0; i < test_names.size(); i++) {
batch.push_back(test_names[i]);
- if (batch.size() >= batch_limit_) {
+ // Use 0 to indicate unlimited batch size.
+ if (batch.size() >= batch_limit_ && batch_limit_ != 0) {
RunBatch(test_launcher, batch);
batch.clear();
}
@@ -293,13 +323,12 @@ void UnitTestLauncherDelegate::RunSerially(
// per run to ensure clean state and make it possible to launch multiple
// processes in parallel.
base::FilePath output_file;
- CHECK(CreateNewTempDirectory(FilePath::StringType(), &output_file));
- output_file = output_file.AppendASCII("test_results.xml");
+ CHECK(platform_delegate_->CreateTemporaryFile(&output_file));
std::vector<std::string> current_test_names;
current_test_names.push_back(test_name);
- CommandLine cmd_line(
- GetCommandLineForChildGTestProcess(current_test_names, output_file));
+ CommandLine cmd_line(platform_delegate_->GetCommandLineForChildGTestProcess(
+ current_test_names, output_file));
GTestCallbackState callback_state;
callback_state.test_launcher = test_launcher;
@@ -307,7 +336,9 @@ void UnitTestLauncherDelegate::RunSerially(
callback_state.output_file = output_file;
test_launcher->LaunchChildGTestProcess(
- cmd_line, std::string(), TestTimeouts::test_launcher_timeout(),
+ cmd_line,
+ platform_delegate_->GetWrapperForChildGTestProcess(),
+ TestTimeouts::test_launcher_timeout(),
use_job_objects_ ? TestLauncher::USE_JOB_OBJECTS : 0,
Bind(&UnitTestLauncherDelegate::SerialGTestCallback, Unretained(this),
callback_state, new_test_names));
@@ -325,11 +356,10 @@ void UnitTestLauncherDelegate::RunBatch(
// per run to ensure clean state and make it possible to launch multiple
// processes in parallel.
base::FilePath output_file;
- CHECK(CreateNewTempDirectory(FilePath::StringType(), &output_file));
- output_file = output_file.AppendASCII("test_results.xml");
+ CHECK(platform_delegate_->CreateTemporaryFile(&output_file));
- CommandLine cmd_line(
- GetCommandLineForChildGTestProcess(test_names, output_file));
+ CommandLine cmd_line(platform_delegate_->GetCommandLineForChildGTestProcess(
+ test_names, output_file));
// Adjust the timeout depending on how many tests we're running
// (note that e.g. the last batch of tests will be smaller).
@@ -346,7 +376,9 @@ void UnitTestLauncherDelegate::RunBatch(
callback_state.output_file = output_file;
test_launcher->LaunchChildGTestProcess(
- cmd_line, std::string(), timeout,
+ cmd_line,
+ platform_delegate_->GetWrapperForChildGTestProcess(),
+ timeout,
use_job_objects_ ? TestLauncher::USE_JOB_OBJECTS : 0,
Bind(&UnitTestLauncherDelegate::GTestCallback, Unretained(this),
callback_state));
« no previous file with comments | « base/test/launcher/unit_test_launcher.h ('k') | base/test/mock_time_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698