// Copyright 2011 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/test/python_utils.h" #include #include "base/command_line.h" #include "base/environment.h" #include "base/files/file_path.h" #include "build/build_config.h" namespace { const base::FilePath::CharType kPythonPathEnv[] = FILE_PATH_LITERAL("PYTHONPATH"); const base::FilePath::CharType kVPythonClearPathEnv[] = FILE_PATH_LITERAL("VPYTHON_CLEAR_PYTHONPATH"); } // namespace void SetPythonPathInEnvironment(const std::vector& python_path, base::EnvironmentMap* map) { base::NativeEnvironmentString path_str; for (const auto& path : python_path) { if (!path_str.empty()) { #if BUILDFLAG(IS_WIN) path_str.push_back(';'); #else path_str.push_back(':'); #endif } path_str += path.value(); } (*map)[kPythonPathEnv] = path_str; // vpython has instructions on BuildBot (not swarming or LUCI) to clear // PYTHONPATH on invocation. Since we are clearing and manipulating it // ourselves, we don't want vpython to throw out our hard work. (*map)[kVPythonClearPathEnv] = base::NativeEnvironmentString(); } bool GetPython3Command(base::CommandLine* python_cmd) { DCHECK(python_cmd); // Use vpython3 to pick up src.git's vpython3 VirtualEnv spec. #if BUILDFLAG(IS_WIN) python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("vpython3.bat"))); #else python_cmd->SetProgram(base::FilePath(FILE_PATH_LITERAL("vpython3"))); #endif #if BUILDFLAG(IS_MAC) // Enable logging to help diagnose https://crbug.com/1254962. Remove this when // the bug is resolved. python_cmd->AppendArg("-vpython-log-level=info"); #endif // Launch python in unbuffered mode, so that python output doesn't mix with // gtest output in buildbot log files. See http://crbug.com/147368. python_cmd->AppendArg("-u"); return true; }