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

Side by Side Diff: base/command_line_unittest.cc

Issue 7386002: Rename CommandLine::GetCommandLineString(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge. Created 9 years, 5 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 | « base/command_line.cc ('k') | base/process_util_unittest.cc » ('j') | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 24 matching lines...) Expand all
35 FILE_PATH_LITERAL("-=loosevalue"), 35 FILE_PATH_LITERAL("-=loosevalue"),
36 FILE_PATH_LITERAL("FLAN"), 36 FILE_PATH_LITERAL("FLAN"),
37 FILE_PATH_LITERAL("--input-translation=45--output-rotation"), 37 FILE_PATH_LITERAL("--input-translation=45--output-rotation"),
38 FILE_PATH_LITERAL("--"), 38 FILE_PATH_LITERAL("--"),
39 FILE_PATH_LITERAL("--"), 39 FILE_PATH_LITERAL("--"),
40 FILE_PATH_LITERAL("--not-a-switch"), 40 FILE_PATH_LITERAL("--not-a-switch"),
41 FILE_PATH_LITERAL("\"in the time of submarines...\""), 41 FILE_PATH_LITERAL("\"in the time of submarines...\""),
42 FILE_PATH_LITERAL("unquoted arg-with-space")}; 42 FILE_PATH_LITERAL("unquoted arg-with-space")};
43 CommandLine cl(arraysize(argv), argv); 43 CommandLine cl(arraysize(argv), argv);
44 44
45 EXPECT_FALSE(cl.command_line_string().empty()); 45 EXPECT_FALSE(cl.GetCommandLineString().empty());
46 EXPECT_FALSE(cl.HasSwitch("cruller")); 46 EXPECT_FALSE(cl.HasSwitch("cruller"));
47 EXPECT_FALSE(cl.HasSwitch("flim")); 47 EXPECT_FALSE(cl.HasSwitch("flim"));
48 EXPECT_FALSE(cl.HasSwitch("program")); 48 EXPECT_FALSE(cl.HasSwitch("program"));
49 EXPECT_FALSE(cl.HasSwitch("dog")); 49 EXPECT_FALSE(cl.HasSwitch("dog"));
50 EXPECT_FALSE(cl.HasSwitch("cat")); 50 EXPECT_FALSE(cl.HasSwitch("cat"));
51 EXPECT_FALSE(cl.HasSwitch("output-rotation")); 51 EXPECT_FALSE(cl.HasSwitch("output-rotation"));
52 EXPECT_FALSE(cl.HasSwitch("not-a-switch")); 52 EXPECT_FALSE(cl.HasSwitch("not-a-switch"));
53 EXPECT_FALSE(cl.HasSwitch("--")); 53 EXPECT_FALSE(cl.HasSwitch("--"));
54 54
55 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("program")).value(), 55 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("program")).value(),
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 #if defined(OS_WIN) 96 #if defined(OS_WIN)
97 CommandLine cl = CommandLine::FromString( 97 CommandLine cl = CommandLine::FromString(
98 L"program --foo= -bAr /Spaetzel=pierogi /Baz flim " 98 L"program --foo= -bAr /Spaetzel=pierogi /Baz flim "
99 L"--other-switches=\"--dog=canine --cat=feline\" " 99 L"--other-switches=\"--dog=canine --cat=feline\" "
100 L"-spaetzle=Crepe -=loosevalue FLAN " 100 L"-spaetzle=Crepe -=loosevalue FLAN "
101 L"--input-translation=\"45\"--output-rotation " 101 L"--input-translation=\"45\"--output-rotation "
102 L"--quotes=" + kTrickyQuoted + L" " 102 L"--quotes=" + kTrickyQuoted + L" "
103 L"-- -- --not-a-switch " 103 L"-- -- --not-a-switch "
104 L"\"in the time of submarines...\""); 104 L"\"in the time of submarines...\"");
105 105
106 EXPECT_FALSE(cl.command_line_string().empty()); 106 EXPECT_FALSE(cl.GetCommandLineString().empty());
107 EXPECT_FALSE(cl.HasSwitch("cruller")); 107 EXPECT_FALSE(cl.HasSwitch("cruller"));
108 EXPECT_FALSE(cl.HasSwitch("flim")); 108 EXPECT_FALSE(cl.HasSwitch("flim"));
109 EXPECT_FALSE(cl.HasSwitch("program")); 109 EXPECT_FALSE(cl.HasSwitch("program"));
110 EXPECT_FALSE(cl.HasSwitch("dog")); 110 EXPECT_FALSE(cl.HasSwitch("dog"));
111 EXPECT_FALSE(cl.HasSwitch("cat")); 111 EXPECT_FALSE(cl.HasSwitch("cat"));
112 EXPECT_FALSE(cl.HasSwitch("output-rotation")); 112 EXPECT_FALSE(cl.HasSwitch("output-rotation"));
113 EXPECT_FALSE(cl.HasSwitch("not-a-switch")); 113 EXPECT_FALSE(cl.HasSwitch("not-a-switch"));
114 EXPECT_FALSE(cl.HasSwitch("--")); 114 EXPECT_FALSE(cl.HasSwitch("--"));
115 115
116 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("program")).value(), 116 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("program")).value(),
(...skipping 27 matching lines...) Expand all
144 ++iter; 144 ++iter;
145 EXPECT_EQ(FILE_PATH_LITERAL("--"), *iter); 145 EXPECT_EQ(FILE_PATH_LITERAL("--"), *iter);
146 ++iter; 146 ++iter;
147 EXPECT_EQ(FILE_PATH_LITERAL("--not-a-switch"), *iter); 147 EXPECT_EQ(FILE_PATH_LITERAL("--not-a-switch"), *iter);
148 ++iter; 148 ++iter;
149 EXPECT_EQ(FILE_PATH_LITERAL("in the time of submarines..."), *iter); 149 EXPECT_EQ(FILE_PATH_LITERAL("in the time of submarines..."), *iter);
150 ++iter; 150 ++iter;
151 EXPECT_TRUE(iter == args.end()); 151 EXPECT_TRUE(iter == args.end());
152 152
153 // Check that a generated string produces an equivalent command line. 153 // Check that a generated string produces an equivalent command line.
154 CommandLine cl_duplicate = CommandLine::FromString(cl.command_line_string()); 154 CommandLine cl_duplicate = CommandLine::FromString(cl.GetCommandLineString());
155 EXPECT_EQ(cl.command_line_string(), cl_duplicate.command_line_string()); 155 EXPECT_EQ(cl.GetCommandLineString(), cl_duplicate.GetCommandLineString());
156 #endif 156 #endif
157 } 157 }
158 158
159 // Tests behavior with an empty input string. 159 // Tests behavior with an empty input string.
160 TEST(CommandLineTest, EmptyString) { 160 TEST(CommandLineTest, EmptyString) {
161 #if defined(OS_WIN) 161 #if defined(OS_WIN)
162 CommandLine cl_from_string = CommandLine::FromString(L""); 162 CommandLine cl_from_string = CommandLine::FromString(L"");
163 EXPECT_TRUE(cl_from_string.command_line_string().empty()); 163 EXPECT_TRUE(cl_from_string.GetCommandLineString().empty());
164 EXPECT_TRUE(cl_from_string.GetProgram().empty()); 164 EXPECT_TRUE(cl_from_string.GetProgram().empty());
165 EXPECT_EQ(1U, cl_from_string.argv().size()); 165 EXPECT_EQ(1U, cl_from_string.argv().size());
166 EXPECT_TRUE(cl_from_string.GetArgs().empty()); 166 EXPECT_TRUE(cl_from_string.GetArgs().empty());
167 #endif 167 #endif
168 CommandLine cl_from_argv(0, NULL); 168 CommandLine cl_from_argv(0, NULL);
169 EXPECT_TRUE(cl_from_argv.command_line_string().empty()); 169 EXPECT_TRUE(cl_from_argv.GetCommandLineString().empty());
170 EXPECT_TRUE(cl_from_argv.GetProgram().empty()); 170 EXPECT_TRUE(cl_from_argv.GetProgram().empty());
171 EXPECT_EQ(1U, cl_from_argv.argv().size()); 171 EXPECT_EQ(1U, cl_from_argv.argv().size());
172 EXPECT_TRUE(cl_from_argv.GetArgs().empty()); 172 EXPECT_TRUE(cl_from_argv.GetArgs().empty());
173 } 173 }
174 174
175 // Test methods for appending switches to a command line. 175 // Test methods for appending switches to a command line.
176 TEST(CommandLineTest, AppendSwitches) { 176 TEST(CommandLineTest, AppendSwitches) {
177 std::string switch1 = "switch1"; 177 std::string switch1 = "switch1";
178 std::string switch2 = "switch2"; 178 std::string switch2 = "switch2";
179 std::string value2 = "value"; 179 std::string value2 = "value";
(...skipping 22 matching lines...) Expand all
202 EXPECT_TRUE(cl.HasSwitch(switch5)); 202 EXPECT_TRUE(cl.HasSwitch(switch5));
203 EXPECT_EQ(value5, cl.GetSwitchValueNative(switch5)); 203 EXPECT_EQ(value5, cl.GetSwitchValueNative(switch5));
204 204
205 #if defined(OS_WIN) 205 #if defined(OS_WIN)
206 EXPECT_EQ(L"Program " 206 EXPECT_EQ(L"Program "
207 L"--switch1 " 207 L"--switch1 "
208 L"--switch2=value " 208 L"--switch2=value "
209 L"--switch3=\"a value with spaces\" " 209 L"--switch3=\"a value with spaces\" "
210 L"--switch4=\"\\\"a value with quotes\\\"\" " 210 L"--switch4=\"\\\"a value with quotes\\\"\" "
211 L"--quotes=\"" + kTrickyQuoted + L"\"", 211 L"--quotes=\"" + kTrickyQuoted + L"\"",
212 cl.command_line_string()); 212 cl.GetCommandLineString());
213 #endif 213 #endif
214 } 214 }
215 215
216 TEST(CommandLineTest, AppendSwitchesDashDash) { 216 TEST(CommandLineTest, AppendSwitchesDashDash) {
217 const CommandLine::CharType* raw_argv[] = { FILE_PATH_LITERAL("prog"), 217 const CommandLine::CharType* raw_argv[] = { FILE_PATH_LITERAL("prog"),
218 FILE_PATH_LITERAL("--"), 218 FILE_PATH_LITERAL("--"),
219 FILE_PATH_LITERAL("--arg1") }; 219 FILE_PATH_LITERAL("--arg1") };
220 CommandLine cl(arraysize(raw_argv), raw_argv); 220 CommandLine cl(arraysize(raw_argv), raw_argv);
221 221
222 cl.AppendSwitch("switch1"); 222 cl.AppendSwitch("switch1");
223 cl.AppendSwitchASCII("switch2", "foo"); 223 cl.AppendSwitchASCII("switch2", "foo");
224 224
225 cl.AppendArg("--arg2"); 225 cl.AppendArg("--arg2");
226 226
227 EXPECT_EQ(FILE_PATH_LITERAL("prog --switch1 --switch2=foo -- --arg1 --arg2"), 227 EXPECT_EQ(FILE_PATH_LITERAL("prog --switch1 --switch2=foo -- --arg1 --arg2"),
228 cl.command_line_string()); 228 cl.GetCommandLineString());
229 CommandLine::StringVector cl_argv = cl.argv(); 229 CommandLine::StringVector cl_argv = cl.argv();
230 EXPECT_EQ(FILE_PATH_LITERAL("prog"), cl_argv[0]); 230 EXPECT_EQ(FILE_PATH_LITERAL("prog"), cl_argv[0]);
231 EXPECT_EQ(FILE_PATH_LITERAL("--switch1"), cl_argv[1]); 231 EXPECT_EQ(FILE_PATH_LITERAL("--switch1"), cl_argv[1]);
232 EXPECT_EQ(FILE_PATH_LITERAL("--switch2=foo"), cl_argv[2]); 232 EXPECT_EQ(FILE_PATH_LITERAL("--switch2=foo"), cl_argv[2]);
233 EXPECT_EQ(FILE_PATH_LITERAL("--"), cl_argv[3]); 233 EXPECT_EQ(FILE_PATH_LITERAL("--"), cl_argv[3]);
234 EXPECT_EQ(FILE_PATH_LITERAL("--arg1"), cl_argv[4]); 234 EXPECT_EQ(FILE_PATH_LITERAL("--arg1"), cl_argv[4]);
235 EXPECT_EQ(FILE_PATH_LITERAL("--arg2"), cl_argv[5]); 235 EXPECT_EQ(FILE_PATH_LITERAL("--arg2"), cl_argv[5]);
236 } 236 }
237 237
238 // Tests that when AppendArguments is called that the program is set correctly 238 // Tests that when AppendArguments is called that the program is set correctly
239 // on the target CommandLine object and the switches from the source 239 // on the target CommandLine object and the switches from the source
240 // CommandLine are added to the target. 240 // CommandLine are added to the target.
241 TEST(CommandLineTest, AppendArguments) { 241 TEST(CommandLineTest, AppendArguments) {
242 CommandLine cl1(FilePath(FILE_PATH_LITERAL("Program"))); 242 CommandLine cl1(FilePath(FILE_PATH_LITERAL("Program")));
243 cl1.AppendSwitch("switch1"); 243 cl1.AppendSwitch("switch1");
244 cl1.AppendSwitchASCII("switch2", "foo"); 244 cl1.AppendSwitchASCII("switch2", "foo");
245 245
246 CommandLine cl2(CommandLine::NO_PROGRAM); 246 CommandLine cl2(CommandLine::NO_PROGRAM);
247 cl2.AppendArguments(cl1, true); 247 cl2.AppendArguments(cl1, true);
248 EXPECT_EQ(cl1.GetProgram().value(), cl2.GetProgram().value()); 248 EXPECT_EQ(cl1.GetProgram().value(), cl2.GetProgram().value());
249 EXPECT_EQ(cl1.command_line_string(), cl2.command_line_string()); 249 EXPECT_EQ(cl1.GetCommandLineString(), cl2.GetCommandLineString());
250 250
251 CommandLine c1(FilePath(FILE_PATH_LITERAL("Program1"))); 251 CommandLine c1(FilePath(FILE_PATH_LITERAL("Program1")));
252 c1.AppendSwitch("switch1"); 252 c1.AppendSwitch("switch1");
253 CommandLine c2(FilePath(FILE_PATH_LITERAL("Program2"))); 253 CommandLine c2(FilePath(FILE_PATH_LITERAL("Program2")));
254 c2.AppendSwitch("switch2"); 254 c2.AppendSwitch("switch2");
255 255
256 c1.AppendArguments(c2, true); 256 c1.AppendArguments(c2, true);
257 EXPECT_EQ(c1.GetProgram().value(), c2.GetProgram().value()); 257 EXPECT_EQ(c1.GetProgram().value(), c2.GetProgram().value());
258 EXPECT_TRUE(c1.HasSwitch("switch1")); 258 EXPECT_TRUE(c1.HasSwitch("switch1"));
259 EXPECT_TRUE(c1.HasSwitch("switch2")); 259 EXPECT_TRUE(c1.HasSwitch("switch2"));
260 } 260 }
261 261
262 #if defined(OS_WIN) 262 #if defined(OS_WIN)
263 // Make sure that program paths of command_line_string are quoted as necessary. 263 // Make sure that the command line string program paths are quoted as necessary.
264 // This only makes sense on Windows and the test is basically here to guard 264 // This only makes sense on Windows and the test is basically here to guard
265 // against regressions. 265 // against regressions.
266 TEST(CommandLineTest, ProgramQuotes) { 266 TEST(CommandLineTest, ProgramQuotes) {
267 // Check that quotes are not added for paths without spaces. 267 // Check that quotes are not added for paths without spaces.
268 const FilePath kProgram(L"Program"); 268 const FilePath kProgram(L"Program");
269 CommandLine cl_program(kProgram); 269 CommandLine cl_program(kProgram);
270 EXPECT_EQ(kProgram.value(), cl_program.GetProgram().value()); 270 EXPECT_EQ(kProgram.value(), cl_program.GetProgram().value());
271 EXPECT_EQ(kProgram.value(), cl_program.command_line_string()); 271 EXPECT_EQ(kProgram.value(), cl_program.GetCommandLineString());
272 272
273 const FilePath kProgramPath(L"Program Path"); 273 const FilePath kProgramPath(L"Program Path");
274 274
275 // Check that quotes are not returned from GetProgram(). 275 // Check that quotes are not returned from GetProgram().
276 CommandLine cl_program_path(kProgramPath); 276 CommandLine cl_program_path(kProgramPath);
277 EXPECT_EQ(kProgramPath.value(), cl_program_path.GetProgram().value()); 277 EXPECT_EQ(kProgramPath.value(), cl_program_path.GetProgram().value());
278 278
279 // Check that quotes are added to command line string paths containing spaces. 279 // Check that quotes are added to command line string paths containing spaces.
280 CommandLine::StringType cmd_string(cl_program_path.command_line_string()); 280 CommandLine::StringType cmd_string(cl_program_path.GetCommandLineString());
281 CommandLine::StringType program_string(cl_program_path.GetProgram().value()); 281 CommandLine::StringType program_string(cl_program_path.GetProgram().value());
282 EXPECT_EQ('"', cmd_string[0]); 282 EXPECT_EQ('"', cmd_string[0]);
283 EXPECT_EQ(program_string, cmd_string.substr(1, program_string.length())); 283 EXPECT_EQ(program_string, cmd_string.substr(1, program_string.length()));
284 EXPECT_EQ('"', cmd_string[program_string.length() + 1]); 284 EXPECT_EQ('"', cmd_string[program_string.length() + 1]);
285 } 285 }
286 #endif 286 #endif
287 287
288 // Calling Init multiple times should not modify the previous CommandLine. 288 // Calling Init multiple times should not modify the previous CommandLine.
289 TEST(CommandLineTest, Init) { 289 TEST(CommandLineTest, Init) {
290 CommandLine* initial = CommandLine::ForCurrentProcess(); 290 CommandLine* initial = CommandLine::ForCurrentProcess();
291 CommandLine::Init(0, NULL); 291 CommandLine::Init(0, NULL);
292 CommandLine* current = CommandLine::ForCurrentProcess(); 292 CommandLine* current = CommandLine::ForCurrentProcess();
293 EXPECT_EQ(initial, current); 293 EXPECT_EQ(initial, current);
294 } 294 }
OLDNEW
« no previous file with comments | « base/command_line.cc ('k') | base/process_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698