1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #include "net/test/python_utils.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker #include <memory>
8*6777b538SAndroid Build Coastguard Worker #include <string>
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Worker #include "base/command_line.h"
11*6777b538SAndroid Build Coastguard Worker #include "base/environment.h"
12*6777b538SAndroid Build Coastguard Worker #include "base/files/file_path.h"
13*6777b538SAndroid Build Coastguard Worker #include "base/process/launch.h"
14*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_util.h"
15*6777b538SAndroid Build Coastguard Worker #include "base/strings/stringprintf.h"
16*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h"
17*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
18*6777b538SAndroid Build Coastguard Worker
TEST(PythonUtils,SetPythonPathInEnvironment)19*6777b538SAndroid Build Coastguard Worker TEST(PythonUtils, SetPythonPathInEnvironment) {
20*6777b538SAndroid Build Coastguard Worker base::EnvironmentMap env;
21*6777b538SAndroid Build Coastguard Worker SetPythonPathInEnvironment({base::FilePath(FILE_PATH_LITERAL("test/path1")),
22*6777b538SAndroid Build Coastguard Worker base::FilePath(FILE_PATH_LITERAL("test/path2"))},
23*6777b538SAndroid Build Coastguard Worker &env);
24*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN)
25*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(FILE_PATH_LITERAL("test/path1;test/path2"),
26*6777b538SAndroid Build Coastguard Worker env[FILE_PATH_LITERAL("PYTHONPATH")]);
27*6777b538SAndroid Build Coastguard Worker #else
28*6777b538SAndroid Build Coastguard Worker EXPECT_EQ("test/path1:test/path2", env["PYTHONPATH"]);
29*6777b538SAndroid Build Coastguard Worker #endif
30*6777b538SAndroid Build Coastguard Worker EXPECT_NE(env.end(), env.find(FILE_PATH_LITERAL("VPYTHON_CLEAR_PYTHONPATH")));
31*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(base::NativeEnvironmentString(),
32*6777b538SAndroid Build Coastguard Worker env[FILE_PATH_LITERAL("VPYTHON_CLEAR_PYTHONPATH")]);
33*6777b538SAndroid Build Coastguard Worker }
34*6777b538SAndroid Build Coastguard Worker
TEST(PythonUtils,Python3RunTime)35*6777b538SAndroid Build Coastguard Worker TEST(PythonUtils, Python3RunTime) {
36*6777b538SAndroid Build Coastguard Worker base::CommandLine cmd_line(base::CommandLine::NO_PROGRAM);
37*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(GetPython3Command(&cmd_line));
38*6777b538SAndroid Build Coastguard Worker
39*6777b538SAndroid Build Coastguard Worker // Run a python command to print a string and make sure the output is what
40*6777b538SAndroid Build Coastguard Worker // we want.
41*6777b538SAndroid Build Coastguard Worker cmd_line.AppendArg("-c");
42*6777b538SAndroid Build Coastguard Worker std::string input("PythonUtilsTest");
43*6777b538SAndroid Build Coastguard Worker std::string python_cmd = base::StringPrintf("print('%s');", input.c_str());
44*6777b538SAndroid Build Coastguard Worker cmd_line.AppendArg(python_cmd);
45*6777b538SAndroid Build Coastguard Worker std::string output;
46*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(base::GetAppOutput(cmd_line, &output));
47*6777b538SAndroid Build Coastguard Worker base::TrimWhitespaceASCII(output, base::TRIM_TRAILING, &output);
48*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(input, output);
49*6777b538SAndroid Build Coastguard Worker }
50