diff options
author | lzheng@chromium.org <lzheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-09 21:49:40 +0000 |
---|---|---|
committer | lzheng@chromium.org <lzheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-09 21:49:40 +0000 |
commit | 813e9cd124841e826bd24aa2c00fe812815d7796 (patch) | |
tree | 596094802d3bfbad10ddcd176ff4a9d9cac95f34 /net/test | |
parent | 630b71e9f360151fa934d4b8eab7ecf987211239 (diff) | |
download | chromium_src-813e9cd124841e826bd24aa2c00fe812815d7796.zip chromium_src-813e9cd124841e826bd24aa2c00fe812815d7796.tar.gz chromium_src-813e9cd124841e826bd24aa2c00fe812815d7796.tar.bz2 |
Make sure the generated python proto buff path is right.
BUG=62415
TEST=mac trybot green with safe_browsing_tests
Review URL: http://codereview.chromium.org/4677002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65574 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/test')
-rw-r--r-- | net/test/python_utils.cc | 30 | ||||
-rw-r--r-- | net/test/python_utils.h | 4 | ||||
-rw-r--r-- | net/test/test_server.cc | 29 |
3 files changed, 37 insertions, 26 deletions
diff --git a/net/test/python_utils.cc b/net/test/python_utils.cc index 438c3d7..3a1068f 100644 --- a/net/test/python_utils.cc +++ b/net/test/python_utils.cc @@ -7,6 +7,7 @@ #include "base/base_paths.h" #include "base/environment.h" #include "base/file_path.h" +#include "base/file_util.h" #include "base/path_service.h" #include "base/scoped_ptr.h" #include "base/utf_string_conversions.h" @@ -36,6 +37,34 @@ void AppendToPythonPath(const FilePath& dir) { } } +bool GetPyProtoPath(FilePath* dir) { + // Locate the Python code generated by the protocol buffers compiler. + FilePath generated_code_dir; + if (!PathService::Get(base::DIR_EXE, &generated_code_dir)) { + return false; + } + + const FilePath kPyProto(FILE_PATH_LITERAL("pyproto")); + +#if defined(OS_MACOSX) + // On Mac, DIR_EXE might be pointing deep into the Release/ (or Debug/) + // directory and we can't depend on how far down it goes. So we walk upwards + // from DIR_EXE until we find a likely looking spot. + while (!file_util::DirectoryExists(generated_code_dir.Append(kPyProto))) { + FilePath parent = generated_code_dir.DirName(); + if (parent == generated_code_dir) { + // We hit the root directory. Maybe we didn't build any targets which + // produced Python protocol buffers. + PathService::Get(base::DIR_EXE, &generated_code_dir); + return false; + } + generated_code_dir = parent; + } +#endif + *dir = generated_code_dir.Append(kPyProto); + return true; +} + bool GetPythonRunTime(FilePath* dir) { #if defined(OS_WIN) if (!PathService::Get(base::DIR_SOURCE_ROOT, dir)) @@ -48,4 +77,3 @@ bool GetPythonRunTime(FilePath* dir) { #endif return true; } - diff --git a/net/test/python_utils.h b/net/test/python_utils.h index 215569c..bc3bdb1 100644 --- a/net/test/python_utils.h +++ b/net/test/python_utils.h @@ -16,8 +16,10 @@ extern const char kPythonPathEnv[]; // Appends the dir to python path environment variable. void AppendToPythonPath(const FilePath& dir); +// Return the location of the compiler-generated python protobuf. +bool GetPyProtoPath(FilePath* dir); + // Returns the path that should be used to launch Python. bool GetPythonRunTime(FilePath* path) WARN_UNUSED_RESULT; #endif // NET_TEST_PYTHON_UTILS_H_ - diff --git a/net/test/test_server.cc b/net/test/test_server.cc index 4b426eb..f5592a2 100644 --- a/net/test/test_server.cc +++ b/net/test/test_server.cc @@ -284,33 +284,14 @@ bool TestServer::SetPythonPath() { AppendToPythonPath(third_party_dir.Append(FILE_PATH_LITERAL("pyftpdlib"))); // Locate the Python code generated by the protocol buffers compiler. - FilePath generated_code_dir; - if (!PathService::Get(base::DIR_EXE, &generated_code_dir)) { - LOG(ERROR) << "Failed to get DIR_EXE"; + FilePath pyproto_code_dir; + if (!GetPyProtoPath(&pyproto_code_dir)) { + LOG(ERROR) << "Failed to get python dir for generated code."; return false; } - static const FilePath kPyProto(FILE_PATH_LITERAL("pyproto")); - -#if defined(OS_MACOSX) - // On Mac, DIR_EXE might be pointing deep into the Release/ (or Debug/) - // directory and we can't depend on how far down it goes. So we walk upwards - // from DIR_EXE until we find a likely looking spot. - while (!file_util::DirectoryExists(generated_code_dir.Append(kPyProto))) { - FilePath parent = generated_code_dir.DirName(); - if (parent == generated_code_dir) { - // We hit the root directory. Maybe we didn't build any targets which - // produced Python protocol buffers. - PathService::Get(base::DIR_EXE, &generated_code_dir); - break; - } - generated_code_dir = parent; - } -#endif - - AppendToPythonPath(generated_code_dir.Append(kPyProto)); - AppendToPythonPath(generated_code_dir.Append(kPyProto). - Append(FILE_PATH_LITERAL("sync_pb"))); + AppendToPythonPath(pyproto_code_dir); + AppendToPythonPath(pyproto_code_dir.Append(FILE_PATH_LITERAL("sync_pb"))); return true; } |