| Index: net/test/test_server_win.cc
|
| diff --git a/net/test/test_server_win.cc b/net/test/test_server_win.cc
|
| index a8b36788d9414a46e333b70e303f255a96a27a6d..eadee56e7a015afb701721f55a531c1b596f47c4 100644
|
| --- a/net/test/test_server_win.cc
|
| +++ b/net/test/test_server_win.cc
|
| @@ -8,6 +8,7 @@
|
| #include <wincrypt.h>
|
|
|
| #include "base/base_paths.h"
|
| +#include "base/command_line.h"
|
| #include "base/file_util.h"
|
| #include "base/path_service.h"
|
| #include "base/string_number_conversions.h"
|
| @@ -18,7 +19,7 @@
|
|
|
| namespace {
|
|
|
| -bool LaunchTestServerAsJob(const std::wstring& cmdline,
|
| +bool LaunchTestServerAsJob(const CommandLine& cmdline,
|
| bool start_hidden,
|
| base::ProcessHandle* process_handle,
|
| ScopedHandle* job_handle) {
|
| @@ -32,10 +33,10 @@ bool LaunchTestServerAsJob(const std::wstring& cmdline,
|
| // If this code is run under a debugger, the test server process is
|
| // automatically associated with a job object created by the debugger.
|
| // The CREATE_BREAKAWAY_FROM_JOB flag is used to prevent this.
|
| - if (!CreateProcess(NULL,
|
| - const_cast<wchar_t*>(cmdline.c_str()), NULL, NULL,
|
| - TRUE, CREATE_BREAKAWAY_FROM_JOB, NULL, NULL,
|
| - &startup_info, &process_info)) {
|
| + if (!CreateProcess(
|
| + NULL, const_cast<wchar_t*>(cmdline.command_line_string().c_str()),
|
| + NULL, NULL, TRUE, CREATE_BREAKAWAY_FROM_JOB, NULL, NULL,
|
| + &startup_info, &process_info)) {
|
| LOG(ERROR) << "Could not create process.";
|
| return false;
|
| }
|
| @@ -74,6 +75,7 @@ bool LaunchTestServerAsJob(const std::wstring& cmdline,
|
| } // namespace
|
|
|
| namespace net {
|
| +
|
| bool TestServer::LaunchPython(const FilePath& testserver_path) {
|
| FilePath python_exe;
|
| if (!PathService::Get(base::DIR_SOURCE_ROOT, &python_exe))
|
| @@ -83,29 +85,10 @@ bool TestServer::LaunchPython(const FilePath& testserver_path) {
|
| .Append(FILE_PATH_LITERAL("python_24"))
|
| .Append(FILE_PATH_LITERAL("python.exe"));
|
|
|
| - std::wstring command_line =
|
| - L"\"" + python_exe.value() + L"\" " +
|
| - L"\"" + testserver_path.value() +
|
| - L"\" --port=" + ASCIIToWide(base::IntToString(host_port_pair_.port())) +
|
| - L" --data-dir=\"" + document_root_.value() + L"\"";
|
| -
|
| - if (type_ == TYPE_FTP)
|
| - command_line.append(L" -f");
|
| -
|
| - FilePath certificate_path(GetCertificatePath());
|
| - if (!certificate_path.value().empty()) {
|
| - if (!file_util::PathExists(certificate_path)) {
|
| - LOG(ERROR) << "Certificate path " << certificate_path.value()
|
| - << " doesn't exist. Can't launch https server.";
|
| - return false;
|
| - }
|
| - command_line.append(L" --https=\"");
|
| - command_line.append(certificate_path.value());
|
| - command_line.append(L"\"");
|
| - }
|
| -
|
| - if (type_ == TYPE_HTTPS_CLIENT_AUTH)
|
| - command_line.append(L" --ssl-client-auth");
|
| + CommandLine python_command(python_exe);
|
| + python_command.AppendArgPath(testserver_path);
|
| + if (!AddCommandLineArguments(&python_command))
|
| + return false;
|
|
|
| HANDLE child_read = NULL;
|
| HANDLE child_write = NULL;
|
| @@ -133,15 +116,15 @@ bool TestServer::LaunchPython(const FilePath& testserver_path) {
|
| // safe to truncate the handle (when passing it from 64-bit to
|
| // 32-bit) or sign-extend the handle (when passing it from 32-bit to
|
| // 64-bit)."
|
| - command_line.append(
|
| - L" --startup-pipe=" +
|
| - ASCIIToWide(base::IntToString(reinterpret_cast<uintptr_t>(child_write))));
|
| + python_command.AppendSwitchASCII(
|
| + "startup-pipe",
|
| + base::IntToString(reinterpret_cast<uintptr_t>(child_write)));
|
|
|
| - if (!LaunchTestServerAsJob(command_line,
|
| + if (!LaunchTestServerAsJob(python_command,
|
| true,
|
| &process_handle_,
|
| &job_handle_)) {
|
| - LOG(ERROR) << "Failed to launch " << command_line;
|
| + LOG(ERROR) << "Failed to launch " << python_command.command_line_string();
|
| return false;
|
| }
|
|
|
|
|