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

Side by Side Diff: base/test/launcher/unit_test_launcher.cc

Issue 1430633002: Use --gtest_flagfile for --gtest_filter in unit test launcher (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 years, 1 month 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
« no previous file with comments | « base/test/launcher/test_launcher.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/test/launcher/unit_test_launcher.h" 5 #include "base/test/launcher/unit_test_launcher.h"
6 6
7 #include "base/base_switches.h" 7 #include "base/base_switches.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 return false; 106 return false;
107 *path = path->AppendASCII("test_results.xml"); 107 *path = path->AppendASCII("test_results.xml");
108 return true; 108 return true;
109 } 109 }
110 110
111 CommandLine GetCommandLineForChildGTestProcess( 111 CommandLine GetCommandLineForChildGTestProcess(
112 const std::vector<std::string>& test_names, 112 const std::vector<std::string>& test_names,
113 const base::FilePath& output_file) override { 113 const base::FilePath& output_file) override {
114 CommandLine new_cmd_line(*CommandLine::ForCurrentProcess()); 114 CommandLine new_cmd_line(*CommandLine::ForCurrentProcess());
115 115
116 CHECK(temp_dir_.IsValid() || temp_dir_.CreateUniqueTempDir());
117 FilePath temp_file;
118 CHECK(CreateTemporaryFileInDir(temp_dir_.path(), &temp_file));
119 std::string long_flags(
120 std::string("--") + kGTestFilterFlag + "=" +
121 JoinString(test_names, ":"));
122 CHECK_EQ(static_cast<int>(long_flags.size()),
123 WriteFile(temp_file,
124 long_flags.data(),
125 static_cast<int>(long_flags.size())));
126
116 new_cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file); 127 new_cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file);
117 new_cmd_line.AppendSwitchASCII(kGTestFilterFlag, 128 new_cmd_line.AppendSwitchPath(kGTestFlagfileFlag, temp_file);
118 JoinString(test_names, ":"));
119 new_cmd_line.AppendSwitch(kSingleProcessTestsFlag); 129 new_cmd_line.AppendSwitch(kSingleProcessTestsFlag);
120 130
121 return new_cmd_line; 131 return new_cmd_line;
122 } 132 }
123 133
124 std::string GetWrapperForChildGTestProcess() override { 134 std::string GetWrapperForChildGTestProcess() override {
125 return std::string(); 135 return std::string();
126 } 136 }
127 137
128 void RelaunchTests(TestLauncher* test_launcher, 138 void RelaunchTests(TestLauncher* test_launcher,
129 const std::vector<std::string>& test_names, 139 const std::vector<std::string>& test_names,
130 int launch_flags) override { 140 int launch_flags) override {
131 // Relaunch requested tests in parallel, but only use single 141 // Relaunch requested tests in parallel, but only use single
132 // test per batch for more precise results (crashes, etc). 142 // test per batch for more precise results (crashes, etc).
133 for (const std::string& test_name : test_names) { 143 for (const std::string& test_name : test_names) {
134 std::vector<std::string> batch; 144 std::vector<std::string> batch;
135 batch.push_back(test_name); 145 batch.push_back(test_name);
136 RunUnitTestsBatch(test_launcher, this, batch, launch_flags); 146 RunUnitTestsBatch(test_launcher, this, batch, launch_flags);
137 } 147 }
138 } 148 }
139 149
150 ScopedTempDir temp_dir_;
151
140 DISALLOW_COPY_AND_ASSIGN(DefaultUnitTestPlatformDelegate); 152 DISALLOW_COPY_AND_ASSIGN(DefaultUnitTestPlatformDelegate);
141 }; 153 };
142 154
143 bool GetSwitchValueAsInt(const std::string& switch_name, int* result) { 155 bool GetSwitchValueAsInt(const std::string& switch_name, int* result) {
144 if (!CommandLine::ForCurrentProcess()->HasSwitch(switch_name)) 156 if (!CommandLine::ForCurrentProcess()->HasSwitch(switch_name))
145 return true; 157 return true;
146 158
147 std::string switch_value = 159 std::string switch_value =
148 CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switch_name); 160 CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switch_name);
149 if (!StringToInt(switch_value, result) || *result < 1) { 161 if (!StringToInt(switch_value, result) || *result < 1) {
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 TestLauncher* test_launcher, 592 TestLauncher* test_launcher,
581 const std::vector<std::string>& test_names) { 593 const std::vector<std::string>& test_names) {
582 ThreadTaskRunnerHandle::Get()->PostTask( 594 ThreadTaskRunnerHandle::Get()->PostTask(
583 FROM_HERE, 595 FROM_HERE,
584 Bind(&RunUnitTestsSerially, test_launcher, platform_delegate_, test_names, 596 Bind(&RunUnitTestsSerially, test_launcher, platform_delegate_, test_names,
585 use_job_objects_ ? TestLauncher::USE_JOB_OBJECTS : 0)); 597 use_job_objects_ ? TestLauncher::USE_JOB_OBJECTS : 0));
586 return test_names.size(); 598 return test_names.size();
587 } 599 }
588 600
589 } // namespace base 601 } // namespace base
OLDNEW
« no previous file with comments | « base/test/launcher/test_launcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698