diff options
author | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-14 01:10:24 +0000 |
---|---|---|
committer | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-14 01:10:24 +0000 |
commit | a40ca43033ac86cc3224d843c233a71e94e72dbf (patch) | |
tree | 3172d0bd0d9430a8f155df047c6b14d188557abc /chrome/test/ui_test_utils.cc | |
parent | dc09efb7dd87597a7e4b5fe790d0ce3a2511380e (diff) | |
download | chromium_src-a40ca43033ac86cc3224d843c233a71e94e72dbf.zip chromium_src-a40ca43033ac86cc3224d843c233a71e94e72dbf.tar.gz chromium_src-a40ca43033ac86cc3224d843c233a71e94e72dbf.tar.bz2 |
Consolidate most CommandLine code across platforms.
Significant refactoring with some notable behavior changes:
1. Switches are appended preceding existing arguments (after other swtiches).
2. (Windows) command_line_string() is generated and properly quoted/escaped.
3. Appended switches will retain their (optional) included prefixes (--,-,/).
Notable internal changes (shouldn't affect behavior):
1. (Windows) Generate the cl string, instead of storing&updating the original.
2. Explicitly retain switch prefixes (--,-,/) (was automatic in init*/ctor).
Update (obvious) code expecting switches to be appended antecedent to args.
Add Nico's test from: codereview.chromium.org/6728016/.
An intermediary CL landed between patch set 3 and 4, see:
http://codereview.chromium.org/6596020
BUG=73195,67764
TEST=Commandline usage.
Review URL: http://codereview.chromium.org/6526040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85360 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/ui_test_utils.cc')
-rw-r--r-- | chrome/test/ui_test_utils.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/chrome/test/ui_test_utils.cc b/chrome/test/ui_test_utils.cc index e7c84aa..77ce4ff 100644 --- a/chrome/test/ui_test_utils.cc +++ b/chrome/test/ui_test_utils.cc @@ -750,17 +750,20 @@ TestWebSocketServer::TestWebSocketServer() : started_(false) { bool TestWebSocketServer::Start(const FilePath& root_directory) { if (started_) return true; + // Append CommandLine arguments after the server script, switches won't work. scoped_ptr<CommandLine> cmd_line(CreateWebSocketServerCommandLine()); - cmd_line->AppendSwitchASCII("server", "start"); - cmd_line->AppendSwitch("chromium"); - cmd_line->AppendSwitch("register_cygwin"); - cmd_line->AppendSwitchPath("root", root_directory); + cmd_line->AppendArg("--server=start"); + cmd_line->AppendArg("--chromium"); + cmd_line->AppendArg("--register_cygwin"); + cmd_line->AppendArgNative(FILE_PATH_LITERAL("--root=") + + root_directory.value()); if (!temp_dir_.CreateUniqueTempDir()) { LOG(ERROR) << "Unable to create a temporary directory."; return false; } websocket_pid_file_ = temp_dir_.path().AppendASCII("websocket.pid"); - cmd_line->AppendSwitchPath("pidfile", websocket_pid_file_); + cmd_line->AppendArgNative(FILE_PATH_LITERAL("--pidfile=") + + websocket_pid_file_.value()); SetPythonPath(); if (!base::LaunchApp(*cmd_line.get(), true, false, NULL)) { LOG(ERROR) << "Unable to launch websocket server."; @@ -771,6 +774,8 @@ bool TestWebSocketServer::Start(const FilePath& root_directory) { } CommandLine* TestWebSocketServer::CreatePythonCommandLine() { + // Note: Python's first argument must be the script; do not append CommandLine + // switches, as they would precede the script path and break this CommandLine. return new CommandLine(FilePath(FILE_PATH_LITERAL("python"))); } @@ -806,10 +811,12 @@ CommandLine* TestWebSocketServer::CreateWebSocketServerCommandLine() { TestWebSocketServer::~TestWebSocketServer() { if (!started_) return; + // Append CommandLine arguments after the server script, switches won't work. scoped_ptr<CommandLine> cmd_line(CreateWebSocketServerCommandLine()); - cmd_line->AppendSwitchASCII("server", "stop"); - cmd_line->AppendSwitch("chromium"); - cmd_line->AppendSwitchPath("pidfile", websocket_pid_file_); + cmd_line->AppendArg("--server=stop"); + cmd_line->AppendArg("--chromium"); + cmd_line->AppendArgNative(FILE_PATH_LITERAL("--pidfile=") + + websocket_pid_file_.value()); base::LaunchApp(*cmd_line.get(), true, false, NULL); } |